dt_automate/vendor/github.com/lxn/win/richedit.go
2025-02-19 18:30:19 +08:00

1274 lines
38 KiB
Go

// Copyright 2010 The win Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build windows
package win
const (
// NOTE: MSFTEDIT.DLL only registers MSFTEDIT_CLASS. If an application wants
// to use the following RichEdit classes, it needs to load riched20.dll.
// Otherwise, CreateWindow with RICHEDIT_CLASS will fail.
// This also applies to any dialog that uses RICHEDIT_CLASS
// RichEdit 2.0 Window Class
MSFTEDIT_CLASS = "RICHEDIT50W"
RICHEDIT_CLASS = "RichEdit20W"
)
// RichEdit messages
const (
EM_CANPASTE = WM_USER + 50
EM_DISPLAYBAND = WM_USER + 51
EM_EXGETSEL = WM_USER + 52
EM_EXLIMITTEXT = WM_USER + 53
EM_EXLINEFROMCHAR = WM_USER + 54
EM_EXSETSEL = WM_USER + 55
EM_FINDTEXT = WM_USER + 56
EM_FORMATRANGE = WM_USER + 57
EM_GETCHARFORMAT = WM_USER + 58
EM_GETEVENTMASK = WM_USER + 59
EM_GETOLEINTERFACE = WM_USER + 60
EM_GETPARAFORMAT = WM_USER + 61
EM_GETSELTEXT = WM_USER + 62
EM_HIDESELECTION = WM_USER + 63
EM_PASTESPECIAL = WM_USER + 64
EM_REQUESTRESIZE = WM_USER + 65
EM_SELECTIONTYPE = WM_USER + 66
EM_SETBKGNDCOLOR = WM_USER + 67
EM_SETCHARFORMAT = WM_USER + 68
EM_SETEVENTMASK = WM_USER + 69
EM_SETOLECALLBACK = WM_USER + 70
EM_SETPARAFORMAT = WM_USER + 71
EM_SETTARGETDEVICE = WM_USER + 72
EM_STREAMIN = WM_USER + 73
EM_STREAMOUT = WM_USER + 74
EM_GETTEXTRANGE = WM_USER + 75
EM_FINDWORDBREAK = WM_USER + 76
EM_SETOPTIONS = WM_USER + 77
EM_GETOPTIONS = WM_USER + 78
EM_FINDTEXTEX = WM_USER + 79
EM_GETWORDBREAKPROCEX = WM_USER + 80
EM_SETWORDBREAKPROCEX = WM_USER + 81
)
// RichEdit 2.0 messages
const (
EM_SETUNDOLIMIT = WM_USER + 82
EM_REDO = WM_USER + 84
EM_CANREDO = WM_USER + 85
EM_GETUNDONAME = WM_USER + 86
EM_GETREDONAME = WM_USER + 87
EM_STOPGROUPTYPING = WM_USER + 88
EM_SETTEXTMODE = WM_USER + 89
EM_GETTEXTMODE = WM_USER + 90
)
type TEXTMODE int32
const (
TM_PLAINTEXT TEXTMODE = 1
TM_RICHTEXT = 2 // Default behavior
TM_SINGLELEVELUNDO = 4
TM_MULTILEVELUNDO = 8 // Default behavior
TM_SINGLECODEPAGE = 16
TM_MULTICODEPAGE = 32 // Default behavior
)
const (
EM_AUTOURLDETECT = WM_USER + 91
)
// RichEdit 8.0 messages
const (
AURL_ENABLEURL = 1
AURL_ENABLEEMAILADDR = 2
AURL_ENABLETELNO = 4
AURL_ENABLEEAURLS = 8
AURL_ENABLEDRIVELETTERS = 16
AURL_DISABLEMIXEDLGC = 32 // Disable mixed Latin Greek Cyrillic IDNs
)
const (
EM_GETAUTOURLDETECT = WM_USER + 92
EM_SETPALETTE = WM_USER + 93
EM_GETTEXTEX = WM_USER + 94
EM_GETTEXTLENGTHEX = WM_USER + 95
EM_SHOWSCROLLBAR = WM_USER + 96
EM_SETTEXTEX = WM_USER + 97
)
// East Asia specific messages
const (
EM_SETPUNCTUATION = WM_USER + 100
EM_GETPUNCTUATION = WM_USER + 101
EM_SETWORDWRAPMODE = WM_USER + 102
EM_GETWORDWRAPMODE = WM_USER + 103
EM_SETIMECOLOR = WM_USER + 104
EM_GETIMECOLOR = WM_USER + 105
EM_SETIMEOPTIONS = WM_USER + 106
EM_GETIMEOPTIONS = WM_USER + 107
EM_CONVPOSITION = WM_USER + 108
)
const (
EM_SETLANGOPTIONS = WM_USER + 120
EM_GETLANGOPTIONS = WM_USER + 121
EM_GETIMECOMPMODE = WM_USER + 122
EM_FINDTEXTW = WM_USER + 123
EM_FINDTEXTEXW = WM_USER + 124
)
// RE3.0 FE messages
const (
EM_RECONVERSION = WM_USER + 125
EM_SETIMEMODEBIAS = WM_USER + 126
EM_GETIMEMODEBIAS = WM_USER + 127
)
// BiDi specific messages
const (
EM_SETBIDIOPTIONS = WM_USER + 200
EM_GETBIDIOPTIONS = WM_USER + 201
EM_SETTYPOGRAPHYOPTIONS = WM_USER + 202
EM_GETTYPOGRAPHYOPTIONS = WM_USER + 203
)
// Extended edit style specific messages
const (
EM_SETEDITSTYLE = WM_USER + 204
EM_GETEDITSTYLE = WM_USER + 205
)
// Extended edit style masks
const (
SES_EMULATESYSEDIT = 1
SES_BEEPONMAXTEXT = 2
SES_EXTENDBACKCOLOR = 4
SES_MAPCPS = 8 // Obsolete (never used)
SES_HYPERLINKTOOLTIPS = 8
SES_EMULATE10 = 16 // Obsolete (never used)
SES_DEFAULTLATINLIGA = 16
SES_USECRLF = 32 // Obsolete (never used)
SES_NOFOCUSLINKNOTIFY = 32
SES_USEAIMM = 64
SES_NOIME = 128
SES_ALLOWBEEPS = 256
SES_UPPERCASE = 512
SES_LOWERCASE = 1024
SES_NOINPUTSEQUENCECHK = 2048
SES_BIDI = 4096
SES_SCROLLONKILLFOCUS = 8192
SES_XLTCRCRLFTOCR = 16384
SES_DRAFTMODE = 32768
SES_USECTF = 0x00010000
SES_HIDEGRIDLINES = 0x00020000
SES_USEATFONT = 0x00040000
SES_CUSTOMLOOK = 0x00080000
SES_LBSCROLLNOTIFY = 0x00100000
SES_CTFALLOWEMBED = 0x00200000
SES_CTFALLOWSMARTTAG = 0x00400000
SES_CTFALLOWPROOFING = 0x00800000
SES_LOGICALCARET = 0x01000000
SES_WORDDRAGDROP = 0x02000000
SES_SMARTDRAGDROP = 0x04000000
SES_MULTISELECT = 0x08000000
SES_CTFNOLOCK = 0x10000000
SES_NOEALINEHEIGHTADJUST = 0x20000000
SES_MAX = 0x20000000
)
// Options for EM_SETLANGOPTIONS and EM_GETLANGOPTIONS
const (
IMF_AUTOKEYBOARD = 0x0001
IMF_AUTOFONT = 0x0002
IMF_IMECANCELCOMPLETE = 0x0004 // High completes comp string when aborting, low cancels
IMF_IMEALWAYSSENDNOTIFY = 0x0008
IMF_AUTOFONTSIZEADJUST = 0x0010
IMF_UIFONTS = 0x0020
IMF_NOIMPLICITLANG = 0x0040
IMF_DUALFONT = 0x0080
IMF_NOKBDLIDFIXUP = 0x0200
IMF_NORTFFONTSUBSTITUTE = 0x0400
IMF_SPELLCHECKING = 0x0800
IMF_TKBPREDICTION = 0x1000
IMF_IMEUIINTEGRATION = 0x2000
)
// Values for EM_GETIMECOMPMODE
const (
ICM_NOTOPEN = 0x0000
ICM_LEVEL3 = 0x0001
ICM_LEVEL2 = 0x0002
ICM_LEVEL2_5 = 0x0003
ICM_LEVEL2_SUI = 0x0004
ICM_CTF = 0x0005
)
// Options for EM_SETTYPOGRAPHYOPTIONS
const (
TO_ADVANCEDTYPOGRAPHY = 0x0001
TO_SIMPLELINEBREAK = 0x0002
TO_DISABLECUSTOMTEXTOUT = 0x0004
TO_ADVANCEDLAYOUT = 0x0008
)
// Pegasus outline mode messages (RE 3.0)
const (
// Outline mode message
EM_OUTLINE = WM_USER + 220
// Message for getting and restoring scroll pos
EM_GETSCROLLPOS = WM_USER + 221
EM_SETSCROLLPOS = WM_USER + 222
// Change fontsize in current selection by wParam
EM_SETFONTSIZE = WM_USER + 223
EM_GETZOOM = WM_USER + 224
EM_SETZOOM = WM_USER + 225
EM_GETVIEWKIND = WM_USER + 226
EM_SETVIEWKIND = WM_USER + 227
)
// RichEdit 4.0 messages
const (
EM_GETPAGE = WM_USER + 228
EM_SETPAGE = WM_USER + 229
EM_GETHYPHENATEINFO = WM_USER + 230
EM_SETHYPHENATEINFO = WM_USER + 231
EM_GETPAGEROTATE = WM_USER + 235
EM_SETPAGEROTATE = WM_USER + 236
EM_GETCTFMODEBIAS = WM_USER + 237
EM_SETCTFMODEBIAS = WM_USER + 238
EM_GETCTFOPENSTATUS = WM_USER + 240
EM_SETCTFOPENSTATUS = WM_USER + 241
EM_GETIMECOMPTEXT = WM_USER + 242
EM_ISIME = WM_USER + 243
EM_GETIMEPROPERTY = WM_USER + 244
)
// These messages control what rich edit does when it comes accross
// OLE objects during RTF stream in. Normally rich edit queries the client
// application only after OleLoad has been called. With these messages it is possible to
// set the rich edit control to a mode where it will query the client application before
// OleLoad is called
const (
EM_GETQUERYRTFOBJ = WM_USER + 269
EM_SETQUERYRTFOBJ = WM_USER + 270
)
// EM_SETPAGEROTATE wparam values
const (
EPR_0 = 0 // Text flows left to right and top to bottom
EPR_270 = 1 // Text flows top to bottom and right to left
EPR_180 = 2 // Text flows right to left and bottom to top
EPR_90 = 3 // Text flows bottom to top and left to right
EPR_SE = 5 // Text flows top to bottom and left to right (Mongolian text layout)
)
// EM_SETCTFMODEBIAS wparam values
const (
CTFMODEBIAS_DEFAULT = 0x0000
CTFMODEBIAS_FILENAME = 0x0001
CTFMODEBIAS_NAME = 0x0002
CTFMODEBIAS_READING = 0x0003
CTFMODEBIAS_DATETIME = 0x0004
CTFMODEBIAS_CONVERSATION = 0x0005
CTFMODEBIAS_NUMERIC = 0x0006
CTFMODEBIAS_HIRAGANA = 0x0007
CTFMODEBIAS_KATAKANA = 0x0008
CTFMODEBIAS_HANGUL = 0x0009
CTFMODEBIAS_HALFWIDTHKATAKANA = 0x000A
CTFMODEBIAS_FULLWIDTHALPHANUMERIC = 0x000B
CTFMODEBIAS_HALFWIDTHALPHANUMERIC = 0x000C
)
// EM_SETIMEMODEBIAS lparam values
const (
IMF_SMODE_PLAURALCLAUSE = 0x0001
IMF_SMODE_NONE = 0x0002
)
// EM_GETIMECOMPTEXT wparam structure
type IMECOMPTEXT struct {
// count of bytes in the output buffer.
Cb int32
// value specifying the composition string type.
// Currently only support ICT_RESULTREADSTR
Flags uint32
}
const ICT_RESULTREADSTR = 1
// Outline mode wparam values
const (
// Enter normal mode, lparam ignored
EMO_EXIT = 0
// Enter outline mode, lparam ignored
EMO_ENTER = 1
// LOWORD(lparam) == 0 ==>
// promote to body-text
// LOWORD(lparam) != 0 ==>
// promote/demote current selection
// by indicated number of levels
EMO_PROMOTE = 2
// HIWORD(lparam) = EMO_EXPANDSELECTION
// -> expands selection to level
// indicated in LOWORD(lparam)
// LOWORD(lparam) = -1/+1 corresponds
// to collapse/expand button presses
// in winword (other values are
// equivalent to having pressed these
// buttons more than once)
// HIWORD(lparam) = EMO_EXPANDDOCUMENT
// -> expands whole document to
// indicated level
EMO_EXPAND = 3
// LOWORD(lparam) != 0 -> move current
// selection up/down by indicated amount
EMO_MOVESELECTION = 4
// Returns VM_NORMAL or VM_OUTLINE
EMO_GETVIEWMODE = 5
)
// EMO_EXPAND options
const (
EMO_EXPANDSELECTION = 0
EMO_EXPANDDOCUMENT = 1
)
const (
// Agrees with RTF \viewkindN
VM_NORMAL = 4
VM_OUTLINE = 2
// Screen page view (not print layout)
VM_PAGE = 9
)
// New messages as of Win8
const (
EM_INSERTTABLE = WM_USER + 232
)
// Data type defining table rows for EM_INSERTTABLE
// Note: The Richedit.h is completely #pragma pack(4)-ed
type TABLEROWPARMS struct { // EM_INSERTTABLE wparam is a (TABLEROWPARMS *)
CbRow uint32 // Count of bytes in this structure
CbCell uint32 // Count of bytes in TABLECELLPARMS
CCell uint32 // Count of cells
CRow uint32 // Count of rows
DxCellMargin int32 // Cell left/right margin (\trgaph)
DxIndent int32 // Row left (right if fRTL indent (similar to \trleft)
DyHeight int32 // Row height (\trrh)
// nAlignment:3 Row alignment (like PARAFORMAT::bAlignment, \trql, trqr, \trqc)
// fRTL:1 Display cells in RTL order (\rtlrow)
// fKeep:1 Keep row together (\trkeep}
// fKeepFollow:1 Keep row on same page as following row (\trkeepfollow)
// fWrap:1 Wrap text to right/left (depending on bAlignment) (see \tdfrmtxtLeftN, \tdfrmtxtRightN)
// fIdentCells:1 lparam points at single struct valid for all cells
Flags uint32
CpStartRow int32 // cp where to insert table (-1 for selection cp) (can be used for either TRD by EM_GETTABLEPARMS)
BTableLevel uint32 // Table nesting level (EM_GETTABLEPARMS only)
ICell uint32 // Index of cell to insert/delete (EM_SETTABLEPARMS only)
}
// Data type defining table cells for EM_INSERTTABLE
// Note: The Richedit.h is completely #pragma pack(4)-ed
type TABLECELLPARMS struct { // EM_INSERTTABLE lparam is a (TABLECELLPARMS *)
DxWidth int32 // Cell width (\cellx)
// nVertAlign:2 Vertical alignment (0/1/2 = top/center/bottom \clvertalt (def), \clvertalc, \clvertalb)
// fMergeTop:1 Top cell for vertical merge (\clvmgf)
// fMergePrev:1 Merge with cell above (\clvmrg)
// fVertical:1 Display text top to bottom, right to left (\cltxtbrlv)
// fMergeStart:1 Start set of horizontally merged cells (\clmgf)
// fMergeCont:1 Merge with previous cell (\clmrg)
Flags uint32
WShading uint32 // Shading in .01% (\clshdng) e.g., 10000 flips fore/back
DxBrdrLeft int32 // Left border width (\clbrdrl\brdrwN) (in twips)
DyBrdrTop int32 // Top border width (\clbrdrt\brdrwN)
DxBrdrRight int32 // Right border width (\clbrdrr\brdrwN)
DyBrdrBottom int32 // Bottom border width (\clbrdrb\brdrwN)
CrBrdrLeft COLORREF // Left border color (\clbrdrl\brdrcf)
CrBrdrTop COLORREF // Top border color (\clbrdrt\brdrcf)
CrBrdrRight COLORREF // Right border color (\clbrdrr\brdrcf)
CrBrdrBottom COLORREF // Bottom border color (\clbrdrb\brdrcf)
CrBackPat COLORREF // Background color (\clcbpat)
CrForePat COLORREF // Foreground color (\clcfpat)
}
const (
EM_GETAUTOCORRECTPROC = WM_USER + 233
EM_SETAUTOCORRECTPROC = WM_USER + 234
EM_CALLAUTOCORRECTPROC = WM_USER + 255
)
// AutoCorrect callback
type AutoCorrectProc func(langid LANGID, pszBefore *uint16, pszAfter *uint16, cchAfter int32, pcchReplaced *int32) int
const (
ATP_NOCHANGE = 0
ATP_CHANGE = 1
ATP_NODELIMITER = 2
ATP_REPLACEALLTEXT = 4
)
const (
EM_GETTABLEPARMS = WM_USER + 265
EM_SETEDITSTYLEEX = WM_USER + 275
EM_GETEDITSTYLEEX = WM_USER + 276
)
// wparam values for EM_SETEDITSTYLEEX/EM_GETEDITSTYLEEX
// All unused bits are reserved.
const (
SES_EX_NOTABLE = 0x00000004
SES_EX_NOMATH = 0x00000040
SES_EX_HANDLEFRIENDLYURL = 0x00000100
SES_EX_NOTHEMING = 0x00080000
SES_EX_NOACETATESELECTION = 0x00100000
SES_EX_USESINGLELINE = 0x00200000
SES_EX_MULTITOUCH = 0x08000000 // Only works under Win8+
SES_EX_HIDETEMPFORMAT = 0x10000000
SES_EX_USEMOUSEWPARAM = 0x20000000 // Use wParam when handling WM_MOUSEMOVE message and do not call GetAsyncKeyState
)
const (
EM_GETSTORYTYPE = WM_USER + 290
EM_SETSTORYTYPE = WM_USER + 291
EM_GETELLIPSISMODE = WM_USER + 305
EM_SETELLIPSISMODE = WM_USER + 306
)
// uint32: *lparam for EM_GETELLIPSISMODE, lparam for EM_SETELLIPSISMODE
const (
ELLIPSIS_MASK = 0x00000003 // all meaningful bits
ELLIPSIS_NONE = 0x00000000 // ellipsis disabled
ELLIPSIS_END = 0x00000001 // ellipsis at the end (forced break)
ELLIPSIS_WORD = 0x00000003 // ellipsis at the end (word break)
)
const (
EM_SETTABLEPARMS = WM_USER + 307
EM_GETTOUCHOPTIONS = WM_USER + 310
EM_SETTOUCHOPTIONS = WM_USER + 311
EM_INSERTIMAGE = WM_USER + 314
EM_SETUIANAME = WM_USER + 320
EM_GETELLIPSISSTATE = WM_USER + 322
)
// Values for EM_SETTOUCHOPTIONS/EM_GETTOUCHOPTIONS
const (
RTO_SHOWHANDLES = 1
RTO_DISABLEHANDLES = 2
RTO_READINGMODE = 3
)
// lparam for EM_INSERTIMAGE
type RICHEDIT_IMAGE_PARAMETERS struct {
XWidth int32 // Units are HIMETRIC
YHeight int32 // Units are HIMETRIC
Ascent int32 // Units are HIMETRIC
Type int32 // Valid values are TA_TOP, TA_BOTTOM and TA_BASELINE
PwszAlternateText *uint16
PIStream uintptr
}
// New notifications
const (
EN_MSGFILTER = 0x0700
EN_REQUESTRESIZE = 0x0701
EN_SELCHANGE = 0x0702
EN_DROPFILES = 0x0703
EN_PROTECTED = 0x0704
EN_CORRECTTEXT = 0x0705 // PenWin specific
EN_STOPNOUNDO = 0x0706
EN_IMECHANGE = 0x0707 // East Asia specific
EN_SAVECLIPBOARD = 0x0708
EN_OLEOPFAILED = 0x0709
EN_OBJECTPOSITIONS = 0x070a
EN_LINK = 0x070b
EN_DRAGDROPDONE = 0x070c
EN_PARAGRAPHEXPANDED = 0x070d
EN_PAGECHANGE = 0x070e
EN_LOWFIRTF = 0x070f
EN_ALIGNLTR = 0x0710 // BiDi specific notification
EN_ALIGNRTL = 0x0711 // BiDi specific notification
EN_CLIPFORMAT = 0x0712
EN_STARTCOMPOSITION = 0x0713
EN_ENDCOMPOSITION = 0x0714
)
// Notification structure for EN_ENDCOMPOSITION
type ENDCOMPOSITIONNOTIFY struct {
Nmhdr NMHDR
DwCode uint32
}
// Constants for ENDCOMPOSITIONNOTIFY dwCode
const (
ECN_ENDCOMPOSITION = 0x0001
ECN_NEWTEXT = 0x0002
)
// Event notification masks
const (
ENM_NONE = 0x00000000
ENM_CHANGE = 0x00000001
ENM_UPDATE = 0x00000002
ENM_SCROLL = 0x00000004
ENM_SCROLLEVENTS = 0x00000008
ENM_DRAGDROPDONE = 0x00000010
ENM_PARAGRAPHEXPANDED = 0x00000020
ENM_PAGECHANGE = 0x00000040
ENM_CLIPFORMAT = 0x00000080
ENM_KEYEVENTS = 0x00010000
ENM_MOUSEEVENTS = 0x00020000
ENM_REQUESTRESIZE = 0x00040000
ENM_SELCHANGE = 0x00080000
ENM_DROPFILES = 0x00100000
ENM_PROTECTED = 0x00200000
ENM_CORRECTTEXT = 0x00400000 // PenWin specific
ENM_IMECHANGE = 0x00800000 // Used by RE1.0 compatibility
ENM_LANGCHANGE = 0x01000000
ENM_OBJECTPOSITIONS = 0x02000000
ENM_LINK = 0x04000000
ENM_LOWFIRTF = 0x08000000
ENM_STARTCOMPOSITION = 0x10000000
ENM_ENDCOMPOSITION = 0x20000000
ENM_GROUPTYPINGCHANGE = 0x40000000
ENM_HIDELINKTOOLTIP = 0x80000000
)
// New edit control styles
const (
ES_SAVESEL = 0x00008000
ES_SUNKEN = 0x00004000
ES_DISABLENOSCROLL = 0x00002000
ES_SELECTIONBAR = 0x01000000 // Same as WS_MAXIMIZE, but that doesn't make sense so we re-use the value
ES_NOOLEDRAGDROP = 0x00000008 // Same as ES_UPPERCASE, but re-used to completely disable OLE drag'n'drop
)
// Obsolete Edit Style
const (
ES_EX_NOCALLOLEINIT = 0x00000000 // Not supported in RE 2.0/3.0
)
// These flags are used in FE Windows
const (
ES_VERTICAL = 0x00400000 // Not supported in RE 2.0/3.0
ES_NOIME = 0x00080000
ES_SELFIME = 0x00040000
)
// Edit control options
const (
ECO_AUTOWORDSELECTION = 0x00000001
ECO_AUTOVSCROLL = 0x00000040
ECO_AUTOHSCROLL = 0x00000080
ECO_NOHIDESEL = 0x00000100
ECO_READONLY = 0x00000800
ECO_WANTRETURN = 0x00001000
ECO_SAVESEL = 0x00008000
ECO_SELECTIONBAR = 0x01000000
ECO_VERTICAL = 0x00400000 // FE specific
)
// ECO operations
const (
ECOOP_SET = 0x0001
ECOOP_OR = 0x0002
ECOOP_AND = 0x0003
ECOOP_XOR = 0x0004
)
// New word break function actions
const (
WB_CLASSIFY = 3
WB_MOVEWORDLEFT = 4
WB_MOVEWORDRIGHT = 5
WB_LEFTBREAK = 6
WB_RIGHTBREAK = 7
)
// East Asia specific flags
const (
WB_MOVEWORDPREV = 4
WB_MOVEWORDNEXT = 5
WB_PREVBREAK = 6
WB_NEXTBREAK = 7
PC_FOLLOWING = 1
PC_LEADING = 2
PC_OVERFLOW = 3
PC_DELIMITER = 4
WBF_WORDWRAP = 0x010
WBF_WORDBREAK = 0x020
WBF_OVERFLOW = 0x040
WBF_LEVEL1 = 0x080
WBF_LEVEL2 = 0x100
WBF_CUSTOM = 0x200
)
// East Asia specific flags
const (
IMF_FORCENONE = 0x0001
IMF_FORCEENABLE = 0x0002
IMF_FORCEDISABLE = 0x0004
IMF_CLOSESTATUSWINDOW = 0x0008
IMF_VERTICAL = 0x0020
IMF_FORCEACTIVE = 0x0040
IMF_FORCEINACTIVE = 0x0080
IMF_FORCEREMEMBER = 0x0100
IMF_MULTIPLEEDIT = 0x0400
)
// Word break flags (used with WB_CLASSIFY)
const (
WBF_CLASS byte = 0x0F
WBF_ISWHITE byte = 0x10
WBF_BREAKLINE byte = 0x20
WBF_BREAKAFTER byte = 0x40
)
type CHARFORMAT struct {
CbSize uint32
DwMask uint32
DwEffects uint32
YHeight int32
YOffset int32
CrTextColor COLORREF
BCharSet byte
BPitchAndFamily byte
SzFaceName [LF_FACESIZE]uint16
}
type CHARFORMAT2 struct {
CHARFORMAT
WWeight uint16 // Font weight (LOGFONT value)
SSpacing int16 // Amount to space between letters
CrBackColor COLORREF // Background color
Lcid LCID // Locale ID
DwCookie uint32 // Client cookie opaque to RichEdit
SStyle int16 // Style handle
WKerning uint16 // Twip size above which to kern char pair
BUnderlineType byte // Underline type
BAnimation byte // Animated text like marching ants
BRevAuthor byte // Revision author index
BUnderlineColor byte // Underline color
}
// CHARFORMAT masks
const (
CFM_BOLD = 0x00000001
CFM_ITALIC = 0x00000002
CFM_UNDERLINE = 0x00000004
CFM_STRIKEOUT = 0x00000008
CFM_PROTECTED = 0x00000010
CFM_LINK = 0x00000020 // Exchange hyperlink extension
CFM_SIZE = 0x80000000
CFM_COLOR = 0x40000000
CFM_FACE = 0x20000000
CFM_OFFSET = 0x10000000
CFM_CHARSET = 0x08000000
)
// CHARFORMAT effects
const (
CFE_BOLD = 0x00000001
CFE_ITALIC = 0x00000002
CFE_UNDERLINE = 0x00000004
CFE_STRIKEOUT = 0x00000008
CFE_PROTECTED = 0x00000010
CFE_LINK = 0x00000020
CFE_AUTOCOLOR = 0x40000000 // NOTE: this corresponds to CFM_COLOR, which controls it
// Masks and effects defined for CHARFORMAT2 -- an (*) indicates that the data is stored by RichEdit 2.0/3.0, but not displayed
CFM_SMALLCAPS = 0x00000040 // (*)
CFM_ALLCAPS = 0x00000080 // Displayed by 3.0
CFM_HIDDEN = 0x00000100 // Hidden by 3.0
CFM_OUTLINE = 0x00000200 // (*)
CFM_SHADOW = 0x00000400 // (*)
CFM_EMBOSS = 0x00000800 // (*)
CFM_IMPRINT = 0x00001000 // (*)
CFM_DISABLED = 0x00002000
CFM_REVISED = 0x00004000
CFM_REVAUTHOR = 0x00008000
CFE_SUBSCRIPT = 0x00010000 // Superscript and subscript are
CFE_SUPERSCRIPT = 0x00020000 // mutually exclusive
CFM_ANIMATION = 0x00040000 // (*)
CFM_STYLE = 0x00080000 // (*)
CFM_KERNING = 0x00100000
CFM_SPACING = 0x00200000 // Displayed by 3.0
CFM_WEIGHT = 0x00400000
CFM_UNDERLINETYPE = 0x00800000 // Many displayed by 3.0
CFM_COOKIE = 0x01000000 // RE 6.0
CFM_LCID = 0x02000000
CFM_BACKCOLOR = 0x04000000 // Higher mask bits defined above
CFM_SUBSCRIPT = (CFE_SUBSCRIPT | CFE_SUPERSCRIPT)
CFM_SUPERSCRIPT = CFM_SUBSCRIPT
// CHARFORMAT "ALL" masks
CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK
CFM_ALL = CFM_EFFECTS | CFM_SIZE | CFM_FACE | CFM_OFFSET | CFM_CHARSET
CFM_EFFECTS2 = CFM_EFFECTS | CFM_DISABLED | CFM_SMALLCAPS | CFM_ALLCAPS | CFM_HIDDEN | CFM_OUTLINE | CFM_SHADOW | CFM_EMBOSS | CFM_IMPRINT | CFM_REVISED | CFM_SUBSCRIPT | CFM_SUPERSCRIPT | CFM_BACKCOLOR
CFM_ALL2 = CFM_ALL | CFM_EFFECTS2 | CFM_BACKCOLOR | CFM_LCID | CFM_UNDERLINETYPE | CFM_WEIGHT | CFM_REVAUTHOR | CFM_SPACING | CFM_KERNING | CFM_STYLE | CFM_ANIMATION | CFM_COOKIE
CFE_SMALLCAPS = CFM_SMALLCAPS
CFE_ALLCAPS = CFM_ALLCAPS
CFE_HIDDEN = CFM_HIDDEN
CFE_OUTLINE = CFM_OUTLINE
CFE_SHADOW = CFM_SHADOW
CFE_EMBOSS = CFM_EMBOSS
CFE_IMPRINT = CFM_IMPRINT
CFE_DISABLED = CFM_DISABLED
CFE_REVISED = CFM_REVISED
// CFE_AUTOCOLOR and CFE_AUTOBACKCOLOR correspond to CFM_COLOR and
// CFM_BACKCOLOR, respectively, which control them
CFE_AUTOBACKCOLOR = CFM_BACKCOLOR
CFM_FONTBOUND = 0x00100000
CFM_LINKPROTECTED = 0x00800000 // Word hyperlink field
CFM_EXTENDED = 0x02000000
CFM_MATHNOBUILDUP = 0x08000000
CFM_MATH = 0x10000000
CFM_MATHORDINARY = 0x20000000
CFM_ALLEFFECTS = (CFM_EFFECTS2 | CFM_FONTBOUND | CFM_EXTENDED | CFM_MATHNOBUILDUP | CFM_MATH | CFM_MATHORDINARY)
CFE_FONTBOUND = 0x00100000 // Font chosen by binder, not user
CFE_LINKPROTECTED = 0x00800000
CFE_EXTENDED = 0x02000000
CFE_MATHNOBUILDUP = 0x08000000
CFE_MATH = 0x10000000
CFE_MATHORDINARY = 0x20000000
// Underline types. RE 1.0 displays only CFU_UNDERLINE
CFU_CF1UNDERLINE = 0xFF // Map charformat's bit underline to CF2
CFU_INVERT = 0xFE // For IME composition fake a selection
CFU_UNDERLINETHICKLONGDASH = 18 // (*) display as dash
CFU_UNDERLINETHICKDOTTED = 17 // (*) display as dot
CFU_UNDERLINETHICKDASHDOTDOT = 16 // (*) display as dash dot dot
CFU_UNDERLINETHICKDASHDOT = 15 // (*) display as dash dot
CFU_UNDERLINETHICKDASH = 14 // (*) display as dash
CFU_UNDERLINELONGDASH = 13 // (*) display as dash
CFU_UNDERLINEHEAVYWAVE = 12 // (*) display as wave
CFU_UNDERLINEDOUBLEWAVE = 11 // (*) display as wave
CFU_UNDERLINEHAIRLINE = 10 // (*) display as single
CFU_UNDERLINETHICK = 9
CFU_UNDERLINEWAVE = 8
CFU_UNDERLINEDASHDOTDOT = 7
CFU_UNDERLINEDASHDOT = 6
CFU_UNDERLINEDASH = 5
CFU_UNDERLINEDOTTED = 4
CFU_UNDERLINEDOUBLE = 3 // (*) display as single
CFU_UNDERLINEWORD = 2 // (*) display as single
CFU_UNDERLINE = 1
CFU_UNDERLINENONE = 0
)
const YHeightCharPtsMost = 1638
const (
// EM_SETCHARFORMAT wParam masks
SCF_SELECTION = 0x0001
SCF_WORD = 0x0002
SCF_DEFAULT = 0x0000 // Set default charformat or paraformat
SCF_ALL = 0x0004 // Not valid with SCF_SELECTION or SCF_WORD
SCF_USEUIRULES = 0x0008 // Modifier for SCF_SELECTION; says that came from a toolbar, etc., and UI formatting rules should be instead of literal formatting
SCF_ASSOCIATEFONT = 0x0010 // Associate fontname with bCharSet (one possible for each of Western, ME, FE, Thai)
SCF_NOKBUPDATE = 0x0020 // Do not update KB layout for this change even if autokeyboard is on
SCF_ASSOCIATEFONT2 = 0x0040 // Associate plane-2 (surrogate) font
SCF_SMARTFONT = 0x0080 // Apply font only if it can handle script (5.0)
SCF_CHARREPFROMLCID = 0x0100 // Get character repertoire from lcid (5.0)
SPF_DONTSETDEFAULT = 0x0002 // Suppress setting default on empty control
SPF_SETDEFAULT = 0x0004 // Set the default paraformat
)
type CHARRANGE struct {
CpMin int32
CpMax int32
}
type TEXTRANGE struct {
Chrg CHARRANGE
LpstrText *uint16 // Allocated by caller, zero terminated by RichEdit
}
type EDITSTREAM struct {
DwCookie uintptr // User value passed to callback as first parameter
DwError uint32 // Last error
PfnCallback uintptr
}
const (
// Stream formats. Flags are all in low word, since high word gives possible codepage choice.
SF_TEXT = 0x0001
SF_RTF = 0x0002
SF_RTFNOOBJS = 0x0003 // Write only
SF_TEXTIZED = 0x0004 // Write only
SF_UNICODE = 0x0010 // Unicode file (UCS2 little endian)
SF_USECODEPAGE = 0x0020 // CodePage given by high word
SF_NCRFORNONASCII = 0x40 // Output \uN for nonASCII
SFF_WRITEXTRAPAR = 0x80 // Output \par at end
// Flag telling stream operations to operate on selection only
// EM_STREAMIN replaces current selection
// EM_STREAMOUT streams out current selection
SFF_SELECTION = 0x8000
// Flag telling stream operations to ignore some FE control words having to do with FE word breaking and horiz vs vertical text.
// Not used in RichEdit 2.0 and later
SFF_PLAINRTF = 0x4000
// Flag telling file stream output (SFF_SELECTION flag not set) to persist // \viewscaleN control word.
SFF_PERSISTVIEWSCALE = 0x2000
// Flag telling file stream input with SFF_SELECTION flag not set not to // close the document
SFF_KEEPDOCINFO = 0x1000
// Flag telling stream operations to output in Pocket Word format
SFF_PWD = 0x0800
// 3-bit field specifying the value of N - 1 to use for \rtfN or \pwdN
SF_RTFVAL = 0x0700
)
type FINDTEXT struct {
Chrg CHARRANGE
LpstrText *uint16
}
type FINDTEXTEX struct {
chrg CHARRANGE
lpstrText *uint16
chrgText CHARRANGE
}
type FORMATRANGE struct {
hdc HDC
hdcTarget HDC
rc RECT
rcPage RECT
chrg CHARRANGE
}
// All paragraph measurements are in twips
const (
MAX_TAB_STOPS = 32
LDefaultTab = 720
MAX_TABLE_CELLS = 63
)
type PARAFORMAT struct {
CbSize uint32
DwMask uint32
WNumbering uint16
WEffects uint16
DxStartIndent int32
DxRightIndent int32
DxOffset int32
WAlignment uint16
CTabCount int16
RgxTabs [MAX_TAB_STOPS]int32
}
type PARAFORMAT2 struct {
PARAFORMAT
DySpaceBefore int32 // Vertical spacing before para
DySpaceAfter int32 // Vertical spacing after para
DyLineSpacing int32 // Line spacing depending on Rule
SStyle int16 // Style handle
BLineSpacingRule byte // Rule for line spacing (see tom.doc)
BOutlineLevel byte // Outline level
WShadingWeight uint16 // Shading in hundredths of a per cent
WShadingStyle uint16 // Nibble 0: style, 1: cfpat, 2: cbpat
WNumberingStart uint16 // Starting value for numbering
WNumberingStyle uint16 // Alignment, roman/arabic, (), ), ., etc.
WNumberingTab uint16 // Space bet FirstIndent & 1st-line text
WBorderSpace uint16 // Border-text spaces (nbl/bdr in pts)
WBorderWidth uint16 // Pen widths (nbl/bdr in half pts)
WBorders uint16 // Border styles (nibble/border)
}
const (
// PARAFORMAT mask values
PFM_STARTINDENT = 0x00000001
PFM_RIGHTINDENT = 0x00000002
PFM_OFFSET = 0x00000004
PFM_ALIGNMENT = 0x00000008
PFM_TABSTOPS = 0x00000010
PFM_NUMBERING = 0x00000020
PFM_OFFSETINDENT = 0x80000000
// PARAFORMAT 2.0 masks and effects
PFM_SPACEBEFORE = 0x00000040
PFM_SPACEAFTER = 0x00000080
PFM_LINESPACING = 0x00000100
PFM_STYLE = 0x00000400
PFM_BORDER = 0x00000800 // (*)
PFM_SHADING = 0x00001000 // (*)
PFM_NUMBERINGSTYLE = 0x00002000 // RE 3.0
PFM_NUMBERINGTAB = 0x00004000 // RE 3.0
PFM_NUMBERINGSTART = 0x00008000 // RE 3.0
PFM_RTLPARA = 0x00010000
PFM_KEEP = 0x00020000 // (*)
PFM_KEEPNEXT = 0x00040000 // (*)
PFM_PAGEBREAKBEFORE = 0x00080000 // (*)
PFM_NOLINENUMBER = 0x00100000 // (*)
PFM_NOWIDOWCONTROL = 0x00200000 // (*)
PFM_DONOTHYPHEN = 0x00400000 // (*)
PFM_SIDEBYSIDE = 0x00800000 // (*)
// The following two paragraph-format properties are read only
PFM_COLLAPSED = 0x01000000 // RE 3.0
PFM_OUTLINELEVEL = 0x02000000 // RE 3.0
PFM_BOX = 0x04000000 // RE 3.0
PFM_RESERVED2 = 0x08000000 // RE 4.0
PFM_TABLEROWDELIMITER = 0x10000000 // RE 4.0
PFM_TEXTWRAPPINGBREAK = 0x20000000 // RE 3.0
PFM_TABLE = 0x40000000 // RE 3.0
// PARAFORMAT "ALL" masks
PFM_ALL = PFM_STARTINDENT | PFM_RIGHTINDENT | PFM_OFFSET | PFM_ALIGNMENT | PFM_TABSTOPS | PFM_NUMBERING | PFM_OFFSETINDENT | PFM_RTLPARA
// Note: PARAFORMAT has no effects (BiDi RichEdit 1.0 does have PFE_RTLPARA)
PFM_EFFECTS = PFM_RTLPARA | PFM_KEEP | PFM_KEEPNEXT | PFM_TABLE | PFM_PAGEBREAKBEFORE | PFM_NOLINENUMBER | PFM_NOWIDOWCONTROL | PFM_DONOTHYPHEN | PFM_SIDEBYSIDE | PFM_TABLE | PFM_TABLEROWDELIMITER
PFM_ALL2 = PFM_ALL | PFM_EFFECTS | PFM_SPACEBEFORE | PFM_SPACEAFTER | PFM_LINESPACING | PFM_STYLE | PFM_SHADING | PFM_BORDER | PFM_NUMBERINGTAB | PFM_NUMBERINGSTART | PFM_NUMBERINGSTYLE
PFE_RTLPARA = PFM_RTLPARA >> 16
PFE_KEEP = PFM_KEEP >> 16 // (*)
PFE_KEEPNEXT = PFM_KEEPNEXT >> 16 // (*)
PFE_PAGEBREAKBEFORE = PFM_PAGEBREAKBEFORE >> 16 // (*)
PFE_NOLINENUMBER = PFM_NOLINENUMBER >> 16 // (*)
PFE_NOWIDOWCONTROL = PFM_NOWIDOWCONTROL >> 16 // (*)
PFE_DONOTHYPHEN = PFM_DONOTHYPHEN >> 16 // (*)
PFE_SIDEBYSIDE = PFM_SIDEBYSIDE >> 16 // (*)
PFE_TEXTWRAPPINGBREAK = PFM_TEXTWRAPPINGBREAK >> 16 // (*)
// The following four effects are read only
PFE_COLLAPSED = PFM_COLLAPSED >> 16 // (+)
PFE_BOX = PFM_BOX >> 16 // (+)
PFE_TABLE = PFM_TABLE >> 16 // Inside table row. RE 3.0
PFE_TABLEROWDELIMITER = PFM_TABLEROWDELIMITER >> 16 // Table row start. RE 4.0
// PARAFORMAT numbering options
PFN_BULLET = 1 // tomListBullet
// PARAFORMAT2 wNumbering options
PFN_ARABIC = 2 // tomListNumberAsArabic: 0, 1, 2, ...
PFN_LCLETTER = 3 // tomListNumberAsLCLetter: a, b, c, ...
PFN_UCLETTER = 4 // tomListNumberAsUCLetter: A, B, C, ...
PFN_LCROMAN = 5 // tomListNumberAsLCRoman: i, ii, iii, ...
PFN_UCROMAN = 6 // tomListNumberAsUCRoman: I, II, III, ...
// PARAFORMAT2 wNumberingStyle options
PFNS_PAREN = 0x000 // default, e.g., 1)
PFNS_PARENS = 0x100 // tomListParentheses/256, e.g., (1)
PFNS_PERIOD = 0x200 // tomListPeriod/256, e.g., 1.
PFNS_PLAIN = 0x300 // tomListPlain/256, e.g., 1
PFNS_NONUMBER = 0x400 // Used for continuation w/o number
PFNS_NEWNUMBER = 0x8000 // Start new number with wNumberingStart
// (can be combined with other PFNS_xxx)
// PARAFORMAT alignment options
PFA_LEFT = 1
PFA_RIGHT = 2
PFA_CENTER = 3
// PARAFORMAT2 alignment options
PFA_JUSTIFY = 4 // New paragraph-alignment option 2.0 (*)
PFA_FULL_INTERWORD = 4 // These are supported in 3.0 with advanced
)
type MSGFILTER struct {
Nmhdr NMHDR
Msg uint32
WParam uintptr
LParam uintptr
}
type REQRESIZE struct {
Nmhdr NMHDR
Rc RECT
}
type SELCHANGE struct {
Nmhdr NMHDR
Chrg CHARRANGE
Seltyp uint16
}
type GROUPTYPINGCHANGE struct {
Nmhdr NMHDR
FGroupTyping BOOL
}
type CLIPBOARDFORMAT struct {
Nmhdr NMHDR
Cf CLIPFORMAT
}
const (
SEL_EMPTY = 0x0000
SEL_TEXT = 0x0001
SEL_OBJECT = 0x0002
SEL_MULTICHAR = 0x0004
SEL_MULTIOBJECT = 0x0008
)
const (
// Used with IRichEditOleCallback::GetContextMenu, this flag will be passed as a "selection type". It indicates that a context menu for a right-mouse drag drop should be generated. The IOleObject parameter will really be the IDataObject for the drop
GCM_RIGHTMOUSEDROP = 0x8000
)
type GETCONTEXTMENUEX struct {
Chrg CHARRANGE
DwFlags uint32
Pt POINT
PvReserved uintptr
}
const (
// bits for GETCONTEXTMENUEX::dwFlags
GCMF_GRIPPER = 0x00000001
GCMF_SPELLING = 0x00000002 // pSpellingSuggestions is valid and points to the list of spelling suggestions
GCMF_TOUCHMENU = 0x00004000
GCMF_MOUSEMENU = 0x00002000
)
type ENDROPFILES struct {
Nmhdr NMHDR
HDrop HANDLE
Cp int32
FProtected BOOL
}
type ENPROTECTED struct {
Nmhdr NMHDR
Msg uint32
WParam uintptr
LParam uintptr
Chrg CHARRANGE
}
type ENSAVECLIPBOARD struct {
Nmhdr NMHDR
CObjectCount int32
Cch int32
}
type ENOLEOPFAILED struct {
Nmhdr NMHDR
Iob int32
LOper int32
Hr HRESULT
}
const OLEOP_DOVERB = 1
type OBJECTPOSITIONS struct {
Nmhdr NMHDR
CObjectCount int32
PcpPositions *int32
}
type ENLINK struct {
Nmhdr NMHDR
Msg uint32
WParam uintptr
LParam uintptr
Chrg CHARRANGE
}
type ENLOWFIRTF struct {
Nmhdr NMHDR
SzControl *byte
}
// PenWin specific
type ENCORRECTTEXT struct {
Nmhdr NMHDR
Chrg CHARRANGE
Seltyp uint16
}
// East Asia specific
type PUNCTUATION struct {
ISize uint32
SzPunctuation *byte
}
// East Asia specific
type COMPCOLOR struct {
CrText COLORREF
CrBackground COLORREF
DwEffects uint32
}
const (
// Clipboard formats - use as parameter to RegisterClipboardFormat()
CF_RTF = "Rich Text Format"
CF_RTFNOOBJS = "Rich Text Format Without Objects"
CF_RETEXTOBJ = "RichEdit Text and Objects"
)
// Paste Special
type REPASTESPECIAL struct {
DwAspect uint32
DwParam uintptr
}
// UndoName info
type UNDONAMEID int32
const (
UID_UNKNOWN UNDONAMEID = 0
UID_TYPING = 1
UID_DELETE = 2
UID_DRAGDROP = 3
UID_CUT = 4
UID_PASTE = 5
UID_AUTOTABLE = 6
)
const (
// Flags for the SETEXTEX data structure
ST_DEFAULT = 0
ST_KEEPUNDO = 1
ST_SELECTION = 2
ST_NEuint16S = 4
ST_UNICODE = 8
)
// EM_SETTEXTEX info; this struct is passed in the wparam of the message
type SETTEXTEX struct {
Flags uint32 // Flags (see the ST_XXX defines)
Codepage uint32 // Code page for translation (CP_ACP for sys default, 1200 for Unicode, -1 for control default)
}
const (
// Flags for the GETEXTEX data structure
GT_DEFAULT = 0
GT_USECRLF = 1
GT_SELECTION = 2
GT_RAWTEXT = 4
GT_NOHIDDENTEXT = 8
)
// EM_GETTEXTEX info; this struct is passed in the wparam of the message
type GETTEXTEX struct {
Cb uint32 // Count of bytes in the string
Flags uint32 // Flags (see the GT_XXX defines
Codepage uint32 // Code page for translation (CP_ACP for sys default, 1200 for Unicode, -1 for control default)
LpDefaultChar *byte // Replacement for unmappable chars
LpUsedDefChar *BOOL // Pointer to flag set when def char used
}
const (
// Flags for the GETTEXTLENGTHEX data structure
GTL_DEFAULT = 0 // Do default (return # of chars)
GTL_USECRLF = 1 // Compute answer using CRLFs for paragraphs
GTL_PRECISE = 2 // Compute a precise answer
GTL_CLOSE = 4 // Fast computation of a "close" answer
GTL_NUMCHARS = 8 // Return number of characters
GTL_NUMBYTES = 16 // Return number of _bytes_
)
// EM_GETTEXTLENGTHEX info; this struct is passed in the wparam of the msg
type GETTEXTLENGTHEX struct {
Flags uint32 // Flags (see GTL_XXX defines)
Codepage uint32 // Code page for translation (CP_ACP for default, 1200 for Unicode)
}
// BiDi specific features
type BIDIOPTIONS struct {
CbSize uint32
WMask uint16
WEffects uint16
}
const (
// BIDIOPTIONS masks
BOM_NEUTRALOVERRIDE = 0x0004 // Override neutral layout (obsolete)
BOM_CONTEXTREADING = 0x0008 // Context reading order
BOM_CONTEXTALIGNMENT = 0x0010 // Context alignment
BOM_LEGACYBIDICLASS = 0x0040 // Legacy Bidi classification (obsolete)
BOM_UNICODEBIDI = 0x0080 // Use Unicode BiDi algorithm
// BIDIOPTIONS effects
BOE_NEUTRALOVERRIDE = 0x0004 // Override neutral layout (obsolete)
BOE_CONTEXTREADING = 0x0008 // Context reading order
BOE_CONTEXTALIGNMENT = 0x0010 // Context alignment
BOE_FORCERECALC = 0x0020 // Force recalc and redraw
BOE_LEGACYBIDICLASS = 0x0040 // Legacy Bidi classification (obsolete)
BOE_UNICODEBIDI = 0x0080 // Use Unicode BiDi algorithm
// Additional EM_FINDTEXT[EX] flags
FR_MATCHDIAC = 0x20000000
FR_MATCHKASHIDA = 0x40000000
FR_MATCHALEFHAMZA = 0x80000000
// UNICODE embedding character
WCH_EMBEDDING uint16 = 0xFFFC
)
// khyph - Kind of hyphenation
type KHYPH int32
const (
KhyphNil KHYPH = iota // No Hyphenation
KhyphNormal // Normal Hyphenation
KhyphAddBefore // Add letter before hyphen
KhyphChangeBefore // Change letter before hyphen
KhyphDeleteBefore // Delete letter before hyphen
KhyphChangeAfter // Change letter after hyphen
KhyphDelAndChange // Delete letter before hyphen and change letter preceding hyphen
)
type HYPHRESULT struct {
Khyph KHYPH // Kind of hyphenation
IchHyph int32 // Character which was hyphenated
ChHyph uint16 // Depending on hyphenation type, character added, changed, etc.
}
type HYPHENATEINFO struct {
CbSize int16 // Size of HYPHENATEINFO structure
DxHyphenateZone int16 // If a space character is closer to the margin than this value, don't hyphenate (in TWIPs)
PfnHyphenate uintptr
}
const (
// Additional class for Richedit 6.0
RICHEDIT60_CLASS = "RICHEDIT60W"
)