<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to OWL_Compatibility_modes</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>Recent changes to OWL_Compatibility_modes</description><atom:link href="https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 09 Dec 2023 07:54:51 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/feed" rel="self" type="application/rss+xml"/><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v33
+++ v34
@@ -148,8 +148,10 @@
 -   CTL3D (3D Windows Controls); support can be independently enabled by defining OWL\_SUPPORT\_CTL3D.

 &lt;br/&gt;
-### Obsolete Borland C++ Class Libraries
+### Deprecated Borland C++ Class Libraries

 The following legacy libraries are deprecated and since OWLNext 7 no longer supported by default. In OWL5\_COMPAT mode, the support is reinstated.

 - [Persistent streams](Replacing_the_Borland_C%2B%2B_Class_Libraries/#persistent-streams)
+
+&lt;br/&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Sat, 09 Dec 2023 07:54:51 -0000</pubDate><guid>https://sourceforge.netee8617d5f6aef7c0ddb1f706b99c12c7089de7c8</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v32
+++ v33
@@ -142,7 +142,14 @@
 &lt;br/&gt;
 ### Obsolete control libraries

-The following legacy libraries are obsolete and no longer supported. In OWL5\_COMPAT mode, the support is reinstated.
+The following legacy libraries are obsolete and no longer supported by default. In OWL5\_COMPAT mode, the support is reinstated.

 -   BWCC (Borland Windows Custom Controls); support can be independently enabled by defining OWL\_SUPPORT\_BWCC.
 -   CTL3D (3D Windows Controls); support can be independently enabled by defining OWL\_SUPPORT\_CTL3D.
+
+&lt;br/&gt;
+### Obsolete Borland C++ Class Libraries
+
+The following legacy libraries are deprecated and since OWLNext 7 no longer supported by default. In OWL5\_COMPAT mode, the support is reinstated.
+
+- [Persistent streams](Replacing_the_Borland_C%2B%2B_Class_Libraries/#persistent-streams)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Sat, 09 Dec 2023 07:52:35 -0000</pubDate><guid>https://sourceforge.net050a5db76a6566a8f1c4690193dc609ff1a0d2ea</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v31
+++ v32
@@ -4,7 +4,7 @@

 For our recommended upgrade approach, see [Upgrading from OWL](Upgrading\_from\_OWL/\#recommended-step-by-step-approach).

-This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#640-series).
+**Note:** The compatibility modes were altogether removed in OWLNext 8, and the rest of this article hence only applies to version 7 and earlier.

 [TOC]

@@ -15,8 +15,7 @@

 Pass "COMPAT=5" to the make file when building the libraries. For example, the following command on a Visual Studio Command Prompt builds the static debug variant of the OWLNext core with enhanced OWL 5 compatibility:

-~~~~
-:::batch
+~~~~batch
 cd %OWLROOT%\source\owlcore
 nmake -f vc.mak DEBUG=1 COMPAT=5
 ~~~~
@@ -34,6 +33,8 @@
 ## Obsolete compatibility modes

 OWLNext is based on OWL 5, and since OWLNext 6.32, the build modes OWL1\_COMPAT and OWL2\_COMPAT are no longer available. Before migrating your code to OWLNext you should make sure it works well with OWL 5. If you have code based on OWL version 1 or 2, you need to upgrade to OWL 5 before moving to OWLNext. See [Upgrading from OWL 1.0](Upgrading\_from\_OWL\_1.0).
+
+Since version 8, there are no compatibility modes in OWLNext. So, if you are upgrading from OWL, you should use an earlier version of OWLNext as a stepping stone. See [Upgrading from OWL | Recommended step-by-step approach](Upgrading_from_OWL/#recommended-step-by-step-approach).
 &lt;br/&gt;

 &lt;hr/&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Sat, 02 Sep 2023 09:37:34 -0000</pubDate><guid>https://sourceforge.net0b2a8d9f0803f362e02301bb6f8bada6f5c2b1d4</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v30
+++ v31
@@ -2,7 +2,7 @@

 This article describes special build modes that allow greater compatibility with OWL. These modes should be used only when porting old code from OWL to OWLNext. After completing the migration, it is recommended that compatibility build modes are turned off, and that your code is adapted to the latest changes in OWLNext.

-For our recommended upgrade path, see [Upgrading from OWL](Upgrading\_from\_OWL/\#recommended-upgrade-path).
+For our recommended upgrade approach, see [Upgrading from OWL](Upgrading\_from\_OWL/\#recommended-step-by-step-approach).

 This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#640-series).

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Tue, 29 Aug 2023 20:26:47 -0000</pubDate><guid>https://sourceforge.netd66a4c7944ace3b7ce9534354acb6cbd603d474b</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v29
+++ v30
@@ -7,6 +7,8 @@
 This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#640-series).

 [TOC]
+
+&lt;br/&gt;

 &lt;hr/&gt;
 ## Usage
@@ -26,11 +28,13 @@
 To use the OWL 5 compatibility mode in your application, you have to add OWL5_COMPAT to the preprocessor definitions in the project settings in your IDE, or pass "/D OWL5_COMPAT" explicitly to the compiler, if you use command-line tools. OWLNext uses auto-linking, so you should not have to specify the library variant to link explicitly.

 **Note**: To avoid link conflicts, OWLNext library variants built with OWL5_COMPAT will have the number 5 embedded in the last part of the library name. For example, for the x86-static-debug variant of OWLNext 6.34, built for Visual Studio 2013, the core library name will be "owl-6.34-v12-x86-**5**dt.lib". For more information, see the [OWLNext Library Files Naming Convention](OWLNext_naming_convention).
+&lt;br/&gt;

 &lt;hr/&gt;
 ## Obsolete compatibility modes

 OWLNext is based on OWL 5, and since OWLNext 6.32, the build modes OWL1\_COMPAT and OWL2\_COMPAT are no longer available. Before migrating your code to OWLNext you should make sure it works well with OWL 5. If you have code based on OWL version 1 or 2, you need to upgrade to OWL 5 before moving to OWLNext. See [Upgrading from OWL 1.0](Upgrading\_from\_OWL\_1.0).
+&lt;br/&gt;

 &lt;hr/&gt;
 ## OWL5\_COMPAT build mode
@@ -48,15 +52,10 @@
 OWLNext 6.40 introduced a major overhaul of the message dispatch machinery, including a new data structure for response tables.

 -   TResponseTableEntry is no longer a template.
-
 -   TResponseTableEntry::Pmf and its associated type PMF have been removed, since they are no longer needed.
-
 -   TEventHandler::TEventInfo::Object is now a void-pointer (previously a pointer to TGeneric).
-
 -   The types TAnyPMF and TAnyDispatcher are no longer used and have been removed.
-
 -   The DECLARE\_SIGNATURE\* macros are no longer used and have been removed.
-
 -   The NOTIFY\_SIG macro is no longer used and has been removed.

 In OWL5\_COMPAT mode, the old data structure is reinstated, as well as the obsolete types and macros. However, the old implementation is deprecated, so you should not rely on it, as this compatibility may be removed in the future. If your code depends on the old implementation, you should update it.
@@ -83,59 +82,32 @@
 **Note**: Beware of changes to the signature of virtual functions. If you use the wrong signature in your override, you may inadvertently and silently create a new virtual function, rather than override the base. To guard against this problem it is recommended to use the `override` keyword (introduced in C++11).

 -   EvGetText now returns `int` and takes `int` buffer size.
-
 -   EvGetTextLength now returns `int`.
-
 -   EvHotKey now have additional parameters `uint modifiers` and `uint vk`.
-
 -   EvPowerBroadCast now returns TResult for compliancy.
-
 -   TBitmap::TBitmap (const BITMAP\*); replaced by TBitmap (const BITMAP&amp;amp;).
-
 -   TBrush::TBrush (const LOGBRUSH\*); replaced by TBrush (const LOGBRUSH&amp;amp;).
-
 -   TBrush::GetObject (LOGBRUSH&amp;amp;); replaced by GetObject (), returning LOGBRUSH.
-
 -   TCursor::TCursor (const ICONINFO\*); replaced by TIcon (const ICONINFO&amp;amp;).
-
 -   TCursor::GetIconInfo (ICONINFO\*); replaced by GetIconInfo (), returning ICONINFO.
-
 -   TFont::TFont (const LOGFONT\*); replaced by TFont (const LOGFONT&amp;amp;).
-
 -   TFont::GetObject (LOGFONT&amp;amp;); replaced by GetObject (), returning LOGFONT.
-
 -   TIcon::TIcon (const ICONINFO\*); replaced by TIcon (const ICONINFO&amp;amp;).
-
 -   TIcon::GetIconInfo (ICONINFO\*); replaced by GetIconInfo (), returning ICONINFO.
-
 -   TListViewCtrl::SetBkColor, SetTextBkColor and SetTextColor now takes a TColor, not a COLORREF.
-
 -   TListViewCtrl::GetBkColor, GetTextBkColor and GetTextColor now returns TColor, not COLORREF.
-
 -   TListViewCtrl::GetOrigin (POINT\*); replaced by GetOrigin (TPoint&amp;amp;).
-
 -   TListViewCtrl::GetViewRect (RECT\*); replaced by GetViewRect (TRect&amp;amp;).
-
 -   TListViewCtrl::GetColumn (int index, LVCOLUMN\*); replaced by GetColumn (int colNum, TLvColumn&amp;amp;).
-
 -   TListViewCtrl::GetItemPosition (int index, POINT\*); replaced by GetItemPosition (int index, TPoint&amp;amp;).
-
 -   TListViewCtrl::GetItemRect (int index, RECT\*, TItemRectType); replaced by GetItemRect (int index, TRect&amp;amp;, TItemRectType).
-
 -   TListViewCtrl::FindItem(int startIndex, const TLvFindInfo\*); replaced by FindItem(int startIndex, const TLvFindInfo&amp;amp;).
-
 -   TPalette::TPalette (const LOGPALETTE\*); replaced by TPalette (const LOGPALETTE&amp;amp;).
-
 -   TPalette::TPalette (const BITMAPINFO\*, uint flags); replaced by TPalette (const BITMAPINFO&amp;amp;, uint flags).
-
 -   TPen::TPen (const LOGPEN\*); replaced by TPen (const LOGPEN&amp;amp;).
-
 -   TPen::GetObject (LOGPEN&amp;amp;); replaced by GetObject (), returning LOGPEN.
-
 -   TResId now implicitly converts to LPCTSTR, not LPTSTR, for const-correctness.
-
 -   TWindow::GetClassName now returns LPCTSTR, not LPTSTR, for const-correctness.
-
 -   TWindow::SetTransferBuffer (void\*); now also takes `uint size`. It also has new overload templates that infer the buffer size from the argument type. See [Safe Transfer Buffers](Safe\_Transfer\_Buffers).

 &lt;br/&gt;
@@ -144,29 +116,17 @@
 The following classes and members are obsolete, but are reinstated in OWL5\_COMPAT mode:

 -   TButtonGadget::TShadowStyle, GetShadowStyle and SetShadowStyle are obsolete.
-
 -   TCommandLine::Kind, Token and TokenLen are now private. Use GetToken and GetTokenKind instead.
-
 -   TDialog::DoCreate is no longer used. Call PerformCreate instead.
-
 -   TDialog::IsModal is replaced by flag TDialog::dfIsModal.
-
 -   TDialog::SendDlgItemMsg is replaced by TWindow::SendDlgItemMsg.
-
 -   TFile::GetStatus and SetStatus are replaced by TFileName::GetStatus and SetStatus.
-
 -   TListViewCtrl::DeleteAnItem is replaced by DeleteItem.
-
 -   TPrintDC::DeviceCapabilities is obsolete. Note that the implementation of this function uses an undocumented Win32 function, which may be missing and hence cause application start-up failure on Windows 10 and later [bugs:#342]. Use Win32  [DeviceCapabilities](https://msdn.microsoft.com/en-us/library/windows/desktop/dd183552.aspx) instead.
-
 -   TTlsContainer::QueryData is replaced by Query.
-
 -   TTlsContainer::GetData, operator T\*, operator T&amp;amp; and operator -\&amp;gt; are all replaced by Get.
-
 -   TWindow::ReceiveMessage is now private. Use HandleMessage instead.
-
 -   TWindow::TransferBuffer is now private. Use GetTransferBuffer instead.
-
 -   Classes TLocalData, TTlsAllocator, TTlsDataManager and TProcessContainer are no longer supported. These are not OWL 5 classes. They were added in OWLNext long ago. They have bugs and are no longer maintained. However, they are reinstated in OWL5\_COMPAT mode to minimise disruption to code that rely on them. Rewrite your code to not depend on these classes, as they will be removed in the future.

 &lt;br/&gt;
@@ -175,9 +135,7 @@
 The following messages are obsolete, but are reinstated in OWL5\_COMPAT mode:

 -   [WM\_CTLCOLOR](http://msdn.microsoft.com/en-us/library/bb432504.aspx); this is an obsolete Win16 message. Use the new Win32 messages instead ([WM\_CTLCOLORBTN](http://msdn.microsoft.com/en-us/library/bb761849.aspx) etc.). In OWL5\_COMPAT mode, EV\_WM\_CTLCOLOR is implemented by redirecting the new messages to the given handler.
-
 -   [WM\_POWER](http://msdn.microsoft.com/en-us/library/windows/desktop/aa373245.aspx) has been replaced by [WM\_POWERBROADCAST](http://msdn.microsoft.com/en-us/library/windows/desktop/aa373247.aspx).
-
 -   [WM\_WININICHANGE](http://msdn.microsoft.com/en-us/library/windows/desktop/ms725499.aspx) has been replaced by [WM\_SETTINGCHANGE](http://msdn.microsoft.com/en-us/library/windows/desktop/ms725497.aspx).

 &lt;br/&gt;
@@ -186,5 +144,4 @@
 The following legacy libraries are obsolete and no longer supported. In OWL5\_COMPAT mode, the support is reinstated.

 -   BWCC (Borland Windows Custom Controls); support can be independently enabled by defining OWL\_SUPPORT\_BWCC.
-
 -   CTL3D (3D Windows Controls); support can be independently enabled by defining OWL\_SUPPORT\_CTL3D.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Fri, 16 Mar 2018 09:28:36 -0000</pubDate><guid>https://sourceforge.nete25052b55db67c54967b39bc5ce81be15f18ebc5</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v28
+++ v29
@@ -19,7 +19,7 @@
 nmake -f vc.mak DEBUG=1 COMPAT=5
 ~~~~

-&lt;br/&gt;If you use OWLMaker, you just select the compatibility mode "OWL 5 API" on the modules page of the OWLMaker Wizard.
+If you use OWLMaker, you just select the compatibility mode "OWL 5 API" on the modules page of the OWLMaker Wizard.

 When "COMPAT=5" is passed to the make file, the macro OWL5_COMPAT will be defined in the arguments passed to the compiler, i.e. "/D OWL5_COMPAT". In turn, the OWLNext source code has conditional code that checks for the definition of OWL5_COMPAT, and if defined, enables greater compatibility with OWL 5 in many places.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Mon, 26 Feb 2018 14:58:59 -0000</pubDate><guid>https://sourceforge.netbc2fc2ce5abb0176c486bfd31e72bcc2e20eb466</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v27
+++ v28
@@ -4,7 +4,7 @@

 For our recommended upgrade path, see [Upgrading from OWL](Upgrading\_from\_OWL/\#recommended-upgrade-path).

-This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#version-643).
+This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#640-series).

 [TOC]

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Wed, 29 Mar 2017 15:59:23 -0000</pubDate><guid>https://sourceforge.net7290dd4a0c937bcccd4687f68f8e2705ad31abca</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v26
+++ v27
@@ -4,7 +4,7 @@

 For our recommended upgrade path, see [Upgrading from OWL](Upgrading\_from\_OWL/\#recommended-upgrade-path).

-This article was last updated for [OWLNext 6.42](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#version-642).
+This article was last updated for [OWLNext 6.43](http://sourceforge.net/p/owlnext/wiki/OWLNext_Stable_Releases/#version-643).

 [TOC]

@@ -157,6 +157,8 @@

 -   TListViewCtrl::DeleteAnItem is replaced by DeleteItem.

+-   TPrintDC::DeviceCapabilities is obsolete. Note that the implementation of this function uses an undocumented Win32 function, which may be missing and hence cause application start-up failure on Windows 10 and later [bugs:#342]. Use Win32  [DeviceCapabilities](https://msdn.microsoft.com/en-us/library/windows/desktop/dd183552.aspx) instead.
+
 -   TTlsContainer::QueryData is replaced by Query.

 -   TTlsContainer::GetData, operator T\*, operator T&amp;amp; and operator -\&amp;gt; are all replaced by Get.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Mon, 08 Aug 2016 16:51:21 -0000</pubDate><guid>https://sourceforge.net80e37b8d18bb6e76770354eb509239e734d15085</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v25
+++ v26
@@ -170,7 +170,7 @@
 &lt;br/&gt;
 ### Obsolete messages

-The following message are obsolete, but are reinstated in OWL5\_COMPAT mode:
+The following messages are obsolete, but are reinstated in OWL5\_COMPAT mode:

 -   [WM\_CTLCOLOR](http://msdn.microsoft.com/en-us/library/bb432504.aspx); this is an obsolete Win16 message. Use the new Win32 messages instead ([WM\_CTLCOLORBTN](http://msdn.microsoft.com/en-us/library/bb761849.aspx) etc.). In OWL5\_COMPAT mode, EV\_WM\_CTLCOLOR is implemented by redirecting the new messages to the given handler.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Mon, 14 Dec 2015 21:48:41 -0000</pubDate><guid>https://sourceforge.netef0c6e9a85ac6e05411d0ec81a506413dddd050e</guid></item><item><title>OWL_Compatibility_modes modified by Vidar Hasfjord</title><link>https://sourceforge.net/p/owlnext/wiki/OWL_Compatibility_modes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v24
+++ v25
@@ -73,7 +73,7 @@
 &lt;br /&gt;
 ### TPointer and TAPointer safety

-For safety, the constructor for these classes are now `explicit`, and the classes are non-copyable. In OWL5\_COMPAT mode these changes are reverted. Rewrite your code to use std::unique\_ptr instead.
+For safety, the constructors for these classes are now `explicit`, and the classes are non-copyable. In OWL5\_COMPAT mode these changes are reverted. Rewrite your code to use std::unique\_ptr instead.

 &lt;br /&gt;
 ### Function signature changes
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vidar Hasfjord</dc:creator><pubDate>Thu, 28 May 2015 10:45:49 -0000</pubDate><guid>https://sourceforge.net250282ad948b94eadff311a809e638135cec3b2f</guid></item></channel></rss>