The return type for TDialog::DialogFunction has type bool, but according to the Windows API, some messages require the handler to return other values. See Windows API documentation for DialogProc and special messages WM_CHARTOITEM, WM_COMPAREITEM, WM_CTL*, WM_INITDIALOG, WM_QUERYDRAGICON and WM_VKEYTOITEM. Note that the correct return type for DialogProc is INT_PTR.
This issue extends to TDialog::StdDlgProc as well. It currently has return type "int".
See topic #4887495 in the Developers forum for a discussion of the issues:
http://sourceforge.net/projects/owlnext/forums/forum/97177/topic/4887495
This issue was fixed in revision 1242:
http://owlnext.svn.sourceforge.net/viewvc/owlnext?view=revision&revision=1242
Note that the fix changes the return type of TDialog::StdDlgProc and TDialog::DialogFunction from int and bool, respectively, to TDialogProcReturnType, a typedef depending on the OWL5_COMPAT build mode. In strict mode (non-OWL5_COMPAT) it is defined as INT_PTR and thus conformant with the Windows API (DialogProc signature).
This change will break existing user code that overrides DialogFunction. The user needs to either update the signature of the overrides, or compile in OWL5_COMPAT mode with non-compliant return type.
Note that the return type for DialogFunction was changed to INT_PTR in [r3139] and merged into 6.42 in [r3141], replacing the typedef TDialogProgReturnType in all build modes, thus allowing 64-bit compilation for OWL5_COMPAT mode. This means that legacy code that overrides DialogFunction now needs to be updated, even in OWL5_COMPAT mode.
Related
Commit: [r3139]
Commit: [r3141]