aboutsummaryrefslogtreecommitdiffhomepage
path: root/qt/ScintillaEditBase
diff options
context:
space:
mode:
Diffstat (limited to 'qt/ScintillaEditBase')
-rw-r--r--qt/ScintillaEditBase/PlatQt.cpp77
-rw-r--r--qt/ScintillaEditBase/PlatQt.h8
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.cpp29
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.h9
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.cpp34
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.h17
6 files changed, 92 insertions, 82 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp
index d5475f4bd..2d49dcb5c 100644
--- a/qt/ScintillaEditBase/PlatQt.cpp
+++ b/qt/ScintillaEditBase/PlatQt.cpp
@@ -14,7 +14,6 @@
#include "Scintilla.h"
#include "UniConversion.h"
#include "DBCS.h"
-#include "FontQuality.h"
#include <QApplication>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
@@ -42,55 +41,57 @@
#include <QTextLine>
#include <QLibrary>
-namespace Scintilla {
+using namespace Scintilla;
+
+namespace Scintilla::Internal {
//----------------------------------------------------------------------
// Convert from a Scintilla characterSet value to a Qt codec name.
-const char *CharacterSetID(int characterSet)
+const char *CharacterSetID(CharacterSet characterSet)
{
switch (characterSet) {
- //case SC_CHARSET_ANSI:
+ //case CharacterSet::Ansi:
// return "";
- case SC_CHARSET_DEFAULT:
+ case CharacterSet::Default:
return "ISO 8859-1";
- case SC_CHARSET_BALTIC:
+ case CharacterSet::Baltic:
return "ISO 8859-13";
- case SC_CHARSET_CHINESEBIG5:
+ case CharacterSet::ChineseBig5:
return "Big5";
- case SC_CHARSET_EASTEUROPE:
+ case CharacterSet::EastEurope:
return "ISO 8859-2";
- case SC_CHARSET_GB2312:
+ case CharacterSet::GB2312:
return "GB18030-0";
- case SC_CHARSET_GREEK:
+ case CharacterSet::Greek:
return "ISO 8859-7";
- case SC_CHARSET_HANGUL:
+ case CharacterSet::Hangul:
return "CP949";
- case SC_CHARSET_MAC:
+ case CharacterSet::Mac:
return "Apple Roman";
//case SC_CHARSET_OEM:
// return "ASCII";
- case SC_CHARSET_RUSSIAN:
+ case CharacterSet::Russian:
return "KOI8-R";
- case SC_CHARSET_CYRILLIC:
+ case CharacterSet::Cyrillic:
return "Windows-1251";
- case SC_CHARSET_SHIFTJIS:
+ case CharacterSet::ShiftJis:
return "Shift-JIS";
//case SC_CHARSET_SYMBOL:
// return "";
- case SC_CHARSET_TURKISH:
+ case CharacterSet::Turkish:
return "ISO 8859-9";
//case SC_CHARSET_JOHAB:
// return "CP1361";
- case SC_CHARSET_HEBREW:
+ case CharacterSet::Hebrew:
return "ISO 8859-8";
- case SC_CHARSET_ARABIC:
+ case CharacterSet::Arabic:
return "ISO 8859-6";
- case SC_CHARSET_VIETNAMESE:
+ case CharacterSet::Vietnamese:
return "Windows-1258";
- case SC_CHARSET_THAI:
+ case CharacterSet::Thai:
return "TIS-620";
- case SC_CHARSET_8859_15:
+ case CharacterSet::Iso8859_15:
return "ISO 8859-15";
default:
return "ISO 8859-1";
@@ -101,27 +102,27 @@ QString UnicodeFromText(QTextCodec *codec, std::string_view text) {
return codec->toUnicode(text.data(), static_cast<int>(text.length()));
}
-static QFont::StyleStrategy ChooseStrategy(int eff)
+static QFont::StyleStrategy ChooseStrategy(FontQuality eff)
{
switch (eff) {
- case SC_EFF_QUALITY_DEFAULT: return QFont::PreferDefault;
- case SC_EFF_QUALITY_NON_ANTIALIASED: return QFont::NoAntialias;
- case SC_EFF_QUALITY_ANTIALIASED: return QFont::PreferAntialias;
- case SC_EFF_QUALITY_LCD_OPTIMIZED: return QFont::PreferAntialias;
+ case FontQuality::QualityDefault: return QFont::PreferDefault;
+ case FontQuality::QualityNonAntialiased: return QFont::NoAntialias;
+ case FontQuality::QualityAntialiased: return QFont::PreferAntialias;
+ case FontQuality::QualityLcdOptimized: return QFont::PreferAntialias;
default: return QFont::PreferDefault;
}
}
class FontAndCharacterSet : public Font {
public:
- int characterSet = 0;
+ CharacterSet characterSet = CharacterSet::Ansi;
QFont *pfont = nullptr;
FontAndCharacterSet(const FontParameters &fp) {
pfont = new QFont;
pfont->setStyleStrategy(ChooseStrategy(fp.extraFontFlag));
pfont->setFamily(QString::fromUtf8(fp.faceName));
pfont->setPointSizeF(fp.size);
- pfont->setBold(fp.weight > 500);
+ pfont->setBold(static_cast<int>(fp.weight) > 500);
pfont->setItalic(fp.italic);
characterSet = fp.characterSet;
@@ -134,11 +135,11 @@ public:
namespace {
-const int SupportsQt[] = {
- SC_SUPPORTS_LINE_DRAWS_FINAL,
- SC_SUPPORTS_FRACTIONAL_STROKE_WIDTH,
- SC_SUPPORTS_TRANSLUCENT_STROKE,
- SC_SUPPORTS_PIXEL_MODIFICATION,
+const Supports SupportsQt[] = {
+ Supports::LineDrawsFinal,
+ Supports::FractionalStrokeWidth,
+ Supports::TranslucentStroke,
+ Supports::PixelModification,
};
const FontAndCharacterSet *AsFontAndCharacterSet(const Font *f) {
@@ -216,9 +217,9 @@ void SurfaceImpl::Release() noexcept
Clear();
}
-int SurfaceImpl::Supports(int feature) noexcept
+int SurfaceImpl::SupportsFeature(Supports feature) noexcept
{
- for (const int f : SupportsQt) {
+ for (const Supports f : SupportsQt) {
if (f == feature)
return 1;
}
@@ -781,7 +782,7 @@ QPainter *SurfaceImpl::GetPainter()
return painter;
}
-std::unique_ptr<Surface> Surface::Allocate(int)
+std::unique_ptr<Surface> Surface::Allocate(Technology)
{
return std::make_unique<SurfaceImpl>();
}
@@ -942,7 +943,7 @@ public:
void SetFont(const Font *font) override;
void Create(Window &parent, int ctrlID, Point location,
- int lineHeight, bool unicodeMode_, int technology) override;
+ int lineHeight, bool unicodeMode_, Technology technology) override;
void SetAverageCharWidth(int width) override;
void SetVisibleRows(int rows) override;
int GetVisibleRows() const override;
@@ -979,7 +980,7 @@ void ListBoxImpl::Create(Window &parent,
Point location,
int /*lineHeight*/,
bool unicodeMode_,
- int)
+ Technology)
{
unicodeMode = unicodeMode_;
diff --git a/qt/ScintillaEditBase/PlatQt.h b/qt/ScintillaEditBase/PlatQt.h
index 446e07ebb..02f3b0f7a 100644
--- a/qt/ScintillaEditBase/PlatQt.h
+++ b/qt/ScintillaEditBase/PlatQt.h
@@ -20,6 +20,8 @@
#include "Debugging.h"
#include "Geometry.h"
+#include "ScintillaTypes.h"
+#include "ScintillaMessages.h"
#include "Platform.h"
#include <QUrl>
@@ -27,9 +29,9 @@
#include <QPainter>
#include <QHash>
-namespace Scintilla {
+namespace Scintilla::Internal {
-const char *CharacterSetID(int characterSet);
+const char *CharacterSetID(Scintilla::CharacterSet characterSet);
inline QColor QColorFromColourRGBA(ColourRGBA ca)
{
@@ -89,7 +91,7 @@ public:
void SetMode(SurfaceMode mode) override;
void Release() noexcept override;
- int Supports(int feature) noexcept override;
+ int SupportsFeature(Scintilla::Supports feature) noexcept override;
bool Initialised() override;
void PenColour(ColourRGBA fore);
void PenColourWidth(ColourRGBA fore, XYPOSITION strokeWidth);
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp
index c94cd13f7..393910ba2 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.cpp
+++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp
@@ -40,6 +40,7 @@
#endif // QT_VERSION >= 5.0.0
using namespace Scintilla;
+using namespace Scintilla::Internal;
ScintillaEditBase::ScintillaEditBase(QWidget *parent)
: QAbstractScrollArea(parent), sqt(nullptr), preeditPos(-1), wheelDelta(0)
@@ -59,10 +60,10 @@ ScintillaEditBase::ScintillaEditBase(QWidget *parent)
setAttribute(Qt::WA_KeyCompression);
setAttribute(Qt::WA_InputMethodEnabled);
- sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(INDIC_HIDDEN, ColourRGBA(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(INDIC_DOTS, ColourRGBA(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(INDIC_COMPOSITIONTHICK, ColourRGBA(0, 0, 0xff));
- sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(INDIC_STRAIGHTBOX, ColourRGBA(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_UNKNOWN] = Indicator(IndicatorStyle::Hidden, ColourRGBA(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_INPUT] = Indicator(IndicatorStyle::Dots, ColourRGBA(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_CONVERTED] = Indicator(IndicatorStyle::CompositionThick, ColourRGBA(0, 0, 0xff));
+ sqt->vs.indicators[SC_INDICATOR_TARGET] = Indicator(IndicatorStyle::StraightBox, ColourRGBA(0, 0, 0xff));
connect(sqt, SIGNAL(notifyParent(SCNotification)),
this, SLOT(notifyParent(SCNotification)));
@@ -100,7 +101,7 @@ sptr_t ScintillaEditBase::send(
uptr_t wParam,
sptr_t lParam) const
{
- return sqt->WndProc(iMessage, wParam, lParam);
+ return sqt->WndProc(static_cast<Message>(iMessage), wParam, lParam);
}
sptr_t ScintillaEditBase::sends(
@@ -108,7 +109,7 @@ sptr_t ScintillaEditBase::sends(
uptr_t wParam,
const char *s) const
{
- return sqt->WndProc(iMessage, wParam, (sptr_t)s);
+ return sqt->WndProc(static_cast<Message>(iMessage), wParam, (sptr_t)s);
}
void ScintillaEditBase::scrollHorizontal(int value)
@@ -179,9 +180,9 @@ void ScintillaEditBase::wheelEvent(QWheelEvent *event)
// Zoom! We play with the font sizes in the styles.
// Number of steps/line is ignored, we just care if sizing up or down
if (wheelEventYDelta(event) > 0) {
- sqt->KeyCommand(SCI_ZOOMIN);
+ sqt->KeyCommand(Message::ZoomIn);
} else {
- sqt->KeyCommand(SCI_ZOOMOUT);
+ sqt->KeyCommand(Message::ZoomOut);
}
} else {
// Ignore wheel events when the scroll bars are disabled.
@@ -257,7 +258,7 @@ void ScintillaEditBase::keyPressEvent(QKeyEvent *event)
bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
bool consumed = false;
- bool added = sqt->KeyDownWithModifiers(key,
+ bool added = sqt->KeyDownWithModifiers(static_cast<Keys>(key),
ScintillaQt::ModifierFlags(shift, ctrl, alt),
&consumed) != 0;
if (!consumed)
@@ -278,7 +279,7 @@ void ScintillaEditBase::keyPressEvent(QKeyEvent *event)
QString text = event->text();
if (input && !text.isEmpty() && text[0].isPrint()) {
QByteArray utext = sqt->BytesForDocument(text);
- sqt->InsertCharacter(std::string_view(utext.data(), utext.size()), EditModel::CharacterSource::directInput);
+ sqt->InsertCharacter(std::string_view(utext.data(), utext.size()), CharacterSource::DirectInput);
} else {
event->ignore();
}
@@ -374,7 +375,7 @@ void ScintillaEditBase::mouseMoveEvent(QMouseEvent *event)
bool alt = QApplication::keyboardModifiers() & Qt::AltModifier;
#endif
- const int modifiers = ScintillaQt::ModifierFlags(shift, ctrl, alt);
+ const KeyMod modifiers = ScintillaQt::ModifierFlags(shift, ctrl, alt);
sqt->ButtonMoveWithModifiers(pos, time.elapsed(), modifiers);
}
@@ -568,7 +569,7 @@ void ScintillaEditBase::inputMethodEvent(QInputMethodEvent *event)
const QString oneCharUTF16 = commitStr.mid(i, ucWidth);
const QByteArray oneChar = sqt->BytesForDocument(oneCharUTF16);
- sqt->InsertCharacter(std::string_view(oneChar.data(), oneChar.length()), EditModel::CharacterSource::directInput);
+ sqt->InsertCharacter(std::string_view(oneChar.data(), oneChar.length()), CharacterSource::DirectInput);
i += ucWidth;
}
@@ -592,7 +593,7 @@ void ScintillaEditBase::inputMethodEvent(QInputMethodEvent *event)
const QByteArray oneChar = sqt->BytesForDocument(oneCharUTF16);
const int oneCharLen = oneChar.length();
- sqt->InsertCharacter(std::string_view(oneChar.data(), oneCharLen), EditModel::CharacterSource::tentativeInput);
+ sqt->InsertCharacter(std::string_view(oneChar.data(), oneCharLen), CharacterSource::TentativeInput);
DrawImeIndicator(imeIndicator[i], oneCharLen);
i += ucWidth;
@@ -832,7 +833,7 @@ void ScintillaEditBase::event_command(uptr_t wParam, sptr_t lParam)
emit command(wParam, lParam);
}
-int ScintillaEditBase::ModifiersOfKeyboard() const
+KeyMod ScintillaEditBase::ModifiersOfKeyboard() const
{
const bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier;
const bool ctrl = QApplication::keyboardModifiers() & Qt::ControlModifier;
diff --git a/qt/ScintillaEditBase/ScintillaEditBase.h b/qt/ScintillaEditBase/ScintillaEditBase.h
index a0375f13d..751b9d294 100644
--- a/qt/ScintillaEditBase/ScintillaEditBase.h
+++ b/qt/ScintillaEditBase/ScintillaEditBase.h
@@ -21,6 +21,9 @@
#include "Debugging.h"
#include "Geometry.h"
+#include "ScintillaTypes.h"
+#include "ScintillaMessages.h"
+#include "ScintillaStructures.h"
#include "Platform.h"
#include "Scintilla.h"
@@ -28,7 +31,7 @@
#include <QMimeData>
#include <QElapsedTimer>
-namespace Scintilla {
+namespace Scintilla::Internal {
class ScintillaQt;
class SurfaceImpl;
@@ -146,7 +149,7 @@ protected:
void scrollContentsBy(int, int) override {}
private:
- Scintilla::ScintillaQt *sqt;
+ Scintilla::Internal::ScintillaQt *sqt;
QElapsedTimer time;
@@ -158,7 +161,7 @@ private:
static bool IsHangul(const QChar qchar);
void MoveImeCarets(int offset);
void DrawImeIndicator(int indicator, int len);
- int ModifiersOfKeyboard() const;
+ Scintilla::KeyMod ModifiersOfKeyboard() const;
};
#endif /* SCINTILLAEDITBASE_H */
diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp
index 710b7de9f..f90313554 100644
--- a/qt/ScintillaEditBase/ScintillaQt.cpp
+++ b/qt/ScintillaEditBase/ScintillaQt.cpp
@@ -23,7 +23,7 @@
#include <QTimer>
using namespace Scintilla;
-
+using namespace Scintilla::Internal;
ScintillaQt::ScintillaQt(QAbstractScrollArea *parent)
: QObject(parent), scrollArea(parent), vMax(0), hMax(0), vPage(0), hPage(0),
@@ -32,7 +32,7 @@ ScintillaQt::ScintillaQt(QAbstractScrollArea *parent)
wMain = scrollArea->viewport();
- imeInteraction = IMEInteraction::internal;
+ imeInteraction = IMEInteraction::Inline;
// On OS X drawing text into a pixmap moves it around 1 pixel to
// the right compared to drawing it directly onto a window.
@@ -385,7 +385,7 @@ void ScintillaQt::PasteFromMode(QClipboard::Mode clipboardMode_)
selText.Copy(dest, pdoc->dbcsCodePage, CharacterSetOfDocument(), isRectangular, false);
UndoGroup ug(pdoc);
- ClearSelection(multiPasteMode == SC_MULTIPASTE_EACH);
+ ClearSelection(multiPasteMode == MultiPaste::Each);
InsertPasteShape(selText.Data(), selText.Length(),
isRectangular ? PasteShape::rectangular : (isLine ? PasteShape::line : PasteShape::stream));
EnsureCaretVisible();
@@ -432,7 +432,7 @@ void ScintillaQt::NotifyFocus(bool focus)
Editor::NotifyFocus(focus);
}
-void ScintillaQt::NotifyParent(SCNotification scn)
+void ScintillaQt::NotifyParent(NotificationData scn)
{
scn.nmhdr.hwndFrom = wMain.GetID();
scn.nmhdr.idFrom = GetCtrlID();
@@ -441,8 +441,8 @@ void ScintillaQt::NotifyParent(SCNotification scn)
void ScintillaQt::NotifyURIDropped(const char *uri)
{
- SCNotification scn = {};
- scn.nmhdr.code = SCN_URIDROPPED;
+ NotificationData scn = {};
+ scn.nmhdr.code = Notification::URIDropped;
scn.text = uri;
NotifyParent(scn);
@@ -519,7 +519,7 @@ bool ScintillaQt::SetIdle(bool on)
return ChangeIdle(on);
}
-int ScintillaQt::CharacterSetOfDocument() const
+CharacterSet ScintillaQt::CharacterSetOfDocument() const
{
return vs.styles[STYLE_DEFAULT].characterSet;
}
@@ -689,7 +689,7 @@ public:
void paintEvent(QPaintEvent *) override
{
if (pct->inCallTipMode) {
- std::unique_ptr<Surface> surfaceWindow = Surface::Allocate(0);
+ std::unique_ptr<Surface> surfaceWindow = Surface::Allocate(Technology::Default);
surfaceWindow->Init(this);
surfaceWindow->SetMode(SurfaceMode(pct->codePage, false));
pct->PaintCT(surfaceWindow.get());
@@ -732,37 +732,37 @@ void ScintillaQt::AddToPopUp(const char *label,
this, SLOT(execCommand(QAction *)));
}
-sptr_t ScintillaQt::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam)
+sptr_t ScintillaQt::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam)
{
try {
switch (iMessage) {
- case SCI_SETIMEINTERACTION:
+ case Message::SetIMEInteraction:
// Only inline IME supported on Qt
break;
- case SCI_GRABFOCUS:
+ case Message::GrabFocus:
scrollArea->setFocus(Qt::OtherFocusReason);
break;
- case SCI_GETDIRECTFUNCTION:
+ case Message::GetDirectFunction:
return reinterpret_cast<sptr_t>(DirectFunction);
- case SCI_GETDIRECTPOINTER:
+ case Message::GetDirectPointer:
return reinterpret_cast<sptr_t>(this);
default:
return ScintillaBase::WndProc(iMessage, wParam, lParam);
}
} catch (std::bad_alloc &) {
- errorStatus = SC_STATUS_BADALLOC;
+ errorStatus = Status::BadAlloc;
} catch (...) {
- errorStatus = SC_STATUS_FAILURE;
+ errorStatus = Status::Failure;
}
return 0;
}
-sptr_t ScintillaQt::DefWndProc(unsigned int, uptr_t, sptr_t)
+sptr_t ScintillaQt::DefWndProc(Message, uptr_t, sptr_t)
{
return 0;
}
@@ -770,7 +770,7 @@ sptr_t ScintillaQt::DefWndProc(unsigned int, uptr_t, sptr_t)
sptr_t ScintillaQt::DirectFunction(
sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam)
{
- return reinterpret_cast<ScintillaQt *>(ptr)->WndProc(iMessage, wParam, lParam);
+ return reinterpret_cast<ScintillaQt *>(ptr)->WndProc(static_cast<Message>(iMessage), wParam, lParam);
}
// Additions to merge in Scientific Toolworks widget structure
diff --git a/qt/ScintillaEditBase/ScintillaQt.h b/qt/ScintillaEditBase/ScintillaQt.h
index adbf11efd..053e59cc8 100644
--- a/qt/ScintillaEditBase/ScintillaQt.h
+++ b/qt/ScintillaEditBase/ScintillaQt.h
@@ -29,6 +29,9 @@
#include <algorithm>
#include <memory>
+#include "ScintillaTypes.h"
+#include "ScintillaMessages.h"
+#include "ScintillaStructures.h"
#include "Scintilla.h"
#include "Debugging.h"
#include "Geometry.h"
@@ -71,7 +74,7 @@
class ScintillaEditBase;
-namespace Scintilla {
+namespace Scintilla::Internal {
class ScintillaQt : public QObject, public ScintillaBase {
Q_OBJECT
@@ -86,14 +89,14 @@ signals:
void horizontalRangeChanged(int max, int page);
void verticalRangeChanged(int max, int page);
- void notifyParent(SCNotification scn);
+ void notifyParent(Scintilla::NotificationData scn);
void notifyChange();
// Clients can use this hook to add additional
// formats (e.g. rich text) to the MIME data.
void aboutToCopy(QMimeData *data);
- void command(uptr_t wParam, sptr_t lParam);
+ void command(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
private slots:
void onIdle();
@@ -122,7 +125,7 @@ private:
void ClaimSelection() override;
void NotifyChange() override;
void NotifyFocus(bool focus) override;
- void NotifyParent(SCNotification scn) override;
+ void NotifyParent(Scintilla::NotificationData scn) override;
void NotifyURIDropped(const char *uri);
int timers[static_cast<size_t>(TickReason::dwell)+1];
bool FineTickerRunning(TickReason reason) override;
@@ -134,7 +137,7 @@ private:
void SetMouseCapture(bool on) override;
bool HaveMouseCapture() override;
void StartDrag() override;
- int CharacterSetOfDocument() const;
+ Scintilla::CharacterSet CharacterSetOfDocument() const;
const char *CharacterSetIDOfDocument() const;
QString StringFromDocument(const char *s) const;
QByteArray BytesForDocument(const QString &text) const;
@@ -143,8 +146,8 @@ private:
void CreateCallTipWindow(PRectangle rc) override;
void AddToPopUp(const char *label, int cmd = 0, bool enabled = true) override;
- sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
- sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
+ sptr_t WndProc(Scintilla::Message iMessage, uptr_t wParam, sptr_t lParam) override;
+ sptr_t DefWndProc(Scintilla::Message iMessage, uptr_t wParam, sptr_t lParam) override;
static sptr_t DirectFunction(sptr_t ptr,
unsigned int iMessage, uptr_t wParam, sptr_t lParam);