Artifact 3bc18713fe7f8f93fb7532f46c4c11e4a4bcb7f0:
0000: 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 66 78 #include "stdafx
0010: 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 65 .h"..#include "e
0020: 77 43 74 72 6c 31 2e 68 22 0d 0a 75 73 69 6e 67 wCtrl1.h"..using
0030: 20 6e 61 6d 65 73 70 61 63 65 20 6b 69 3b 0d 0a namespace ki;..
0040: 75 73 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 20 using namespace
0050: 65 64 69 74 77 69 6e 67 3b 0d 0a 0d 0a 0d 0a 0d editwing;.......
0060: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//-------------
0070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f ------------..//
00b0: 20 45 77 45 64 69 74 83 52 83 93 83 67 83 8d 81 EwEdit.R...g...
00c0: 5b 83 8b 8d ec 90 ac 2f 94 6a 8a fc 0d 0a 2f 2f [....../.j....//
00d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 45 77 45 ---------....EwE
0120: 64 69 74 3a 3a 43 6c 73 4e 61 6d 65 20 45 77 45 dit::ClsName EwE
0130: 64 69 74 3a 3a 63 6c 61 73 73 4e 61 6d 65 5f 20 dit::className_
0140: 3d 20 54 45 58 54 28 22 45 64 69 74 57 69 6e 67 = TEXT("EditWing
0150: 20 43 6f 6e 74 72 6f 6c 2d 30 31 22 29 3b 0d 0a Control-01");..
0160: 0d 0a 45 77 45 64 69 74 3a 3a 45 77 45 64 69 74 ..EwEdit::EwEdit
0170: 28 29 0d 0a 09 3a 20 57 6e 64 49 6d 70 6c 28 20 ()...: WndImpl(
0180: 63 6c 61 73 73 4e 61 6d 65 5f 2c 20 57 53 5f 43 className_, WS_C
0190: 48 49 4c 44 7c 57 53 5f 56 49 53 49 42 4c 45 2c HILD|WS_VISIBLE,
01a0: 20 57 53 5f 45 58 5f 43 4c 49 45 4e 54 45 44 47 WS_EX_CLIENTEDG
01b0: 45 20 29 0d 0a 7b 0d 0a 09 73 74 61 74 69 63 20 E )..{...static
01c0: 62 6f 6f 6c 20 43 6c 61 73 73 52 65 67 69 73 74 bool ClassRegist
01d0: 65 72 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 ered = false;...
01e0: 69 66 28 20 21 43 6c 61 73 73 52 65 67 69 73 74 if( !ClassRegist
01f0: 65 72 65 64 20 29 0d 0a 09 7b 0d 0a 09 09 43 6c ered )...{....Cl
0200: 61 73 73 52 65 67 69 73 74 65 72 65 64 20 3d 20 assRegistered =
0210: 74 72 75 65 3b 0d 0a 0d 0a 09 09 2f 2f 20 8f 89 true;......// ..
0220: 89 f1 8d 5c 92 7a 8e 9e 82 cc 82 dd 81 41 83 4e ...\.z.......A.N
0230: 83 89 83 58 93 6f 98 5e 82 f0 8d 73 82 a4 0d 0a ...X.o.^...s....
0240: 09 09 57 4e 44 43 4c 41 53 53 45 58 20 77 63 20 ..WNDCLASSEX wc
0250: 20 20 20 3d 20 7b 30 7d 3b 0d 0a 09 09 77 63 2e = {0};....wc.
0260: 6c 70 73 7a 43 6c 61 73 73 4e 61 6d 65 20 3d 20 lpszClassName =
0270: 63 6c 61 73 73 4e 61 6d 65 5f 3b 0d 0a 09 09 57 className_;....W
0280: 6e 64 49 6d 70 6c 3a 3a 52 65 67 69 73 74 65 72 ndImpl::Register
0290: 28 20 26 77 63 20 29 3b 0d 0a 09 7d 0d 0a 7d 0d ( &wc );...}..}.
02a0: 0a 0d 0a 45 77 45 64 69 74 3a 3a 7e 45 77 45 64 ...EwEdit::~EwEd
02b0: 69 74 28 29 0d 0a 7b 0d 0a 09 44 65 73 74 72 6f it()..{...Destro
02c0: 79 28 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 y();..}....void
02d0: 45 77 45 64 69 74 3a 3a 6f 6e 5f 63 72 65 61 74 EwEdit::on_creat
02e0: 65 28 20 43 52 45 41 54 45 53 54 52 55 43 54 2a e( CREATESTRUCT*
02f0: 20 63 73 20 29 0d 0a 7b 0d 0a 09 64 6f 63 5f 20 cs )..{...doc_
0300: 20 3d 20 6e 65 77 20 64 6f 63 3a 3a 44 6f 63 75 = new doc::Docu
0310: 6d 65 6e 74 3b 0d 0a 09 76 69 65 77 5f 20 3d 20 ment;...view_ =
0320: 6e 65 77 20 76 69 65 77 3a 3a 56 69 65 77 28 20 new view::View(
0330: 2a 64 6f 63 5f 2c 20 68 77 6e 64 28 29 20 29 3b *doc_, hwnd() );
0340: 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 45 77 45 64 ..}....void EwEd
0350: 69 74 3a 3a 6f 6e 5f 64 65 73 74 72 6f 79 28 29 it::on_destroy()
0360: 0d 0a 7b 0d 0a 09 76 69 65 77 5f 20 3d 20 4e 55 ..{...view_ = NU
0370: 4c 4c 3b 0d 0a 09 64 6f 63 5f 20 20 3d 20 4e 55 LL;...doc_ = NU
0380: 4c 4c 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f LL;..}........//
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 8a c8 ---------..// ..
03e0: 92 50 82 c8 83 81 83 62 83 5a 81 5b 83 57 90 a7 .P.....b.Z.[.W..
03f0: 8c e4 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....//----------
0400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d ---------------.
0440: 0a 0d 0a 4c 52 45 53 55 4c 54 20 45 77 45 64 69 ...LRESULT EwEdi
0450: 74 3a 3a 6f 6e 5f 6d 65 73 73 61 67 65 28 20 55 t::on_message( U
0460: 49 4e 54 20 6d 73 67 2c 20 57 50 41 52 41 4d 20 INT msg, WPARAM
0470: 77 70 2c 20 4c 50 41 52 41 4d 20 6c 70 20 29 0d wp, LPARAM lp ).
0480: 0a 7b 0d 0a 09 73 77 69 74 63 68 28 20 6d 73 67 .{...switch( msg
0490: 20 29 0d 0a 09 7b 0d 0a 09 63 61 73 65 20 57 4d )...{...case WM
04a0: 5f 53 45 54 46 4f 43 55 53 3a 0d 0a 09 09 7b 0d _SETFOCUS:....{.
04b0: 0a 09 09 09 76 69 65 77 5f 2d 3e 53 65 74 46 6f ....view_->SetFo
04c0: 63 75 73 28 29 3b 0d 0a 09 09 09 62 72 65 61 6b cus();.....break
04d0: 3b 0d 0a 09 09 7d 0d 0a 09 63 61 73 65 20 57 4d ;....}...case WM
04e0: 5f 53 49 5a 45 3a 0d 0a 09 09 7b 0d 0a 09 09 09 _SIZE:....{.....
04f0: 52 45 43 54 20 72 63 3b 0d 0a 09 09 09 67 65 74 RECT rc;.....get
0500: 43 6c 69 65 6e 74 52 65 63 74 28 20 26 72 63 20 ClientRect( &rc
0510: 29 3b 0d 0a 09 09 09 76 69 65 77 5f 2d 3e 4d 6f );.....view_->Mo
0520: 76 65 54 6f 28 20 30 2c 20 30 2c 20 72 63 2e 72 veTo( 0, 0, rc.r
0530: 69 67 68 74 2c 20 72 63 2e 62 6f 74 74 6f 6d 20 ight, rc.bottom
0540: 29 3b 0d 0a 09 09 09 62 72 65 61 6b 3b 0d 0a 09 );.....break;...
0550: 09 7d 0d 0a 09 63 61 73 65 20 45 4d 5f 43 41 4e .}...case EM_CAN
0560: 55 4e 44 4f 3a 20 20 20 20 20 72 65 74 75 72 6e UNDO: return
0570: 20 67 65 74 44 6f 63 28 29 2e 69 73 55 6e 64 6f getDoc().isUndo
0580: 41 62 6c 65 28 29 3b 0d 0a 09 63 61 73 65 20 45 Able();...case E
0590: 4d 5f 53 45 54 52 45 41 44 4f 4e 4c 59 3a 20 67 M_SETREADONLY: g
05a0: 65 74 43 75 72 73 6f 72 28 29 2e 53 65 74 52 4f etCursor().SetRO
05b0: 4d 6f 64 65 28 77 70 21 3d 46 41 4c 53 45 29 3b Mode(wp!=FALSE);
05c0: 20 72 65 74 75 72 6e 20 54 52 55 45 3b 0d 0a 09 return TRUE;...
05d0: 63 61 73 65 20 57 4d 5f 43 4f 50 59 3a 20 20 67 case WM_COPY: g
05e0: 65 74 43 75 72 73 6f 72 28 29 2e 43 6f 70 79 28 etCursor().Copy(
05f0: 29 3b 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 09 ); return 0;...
0600: 63 61 73 65 20 57 4d 5f 43 55 54 3a 20 20 20 67 case WM_CUT: g
0610: 65 74 43 75 72 73 6f 72 28 29 2e 43 75 74 28 29 etCursor().Cut()
0620: 3b 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 09 ; return 0;...
0630: 63 61 73 65 20 57 4d 5f 50 41 53 54 45 3a 20 67 case WM_PASTE: g
0640: 65 74 43 75 72 73 6f 72 28 29 2e 50 61 73 74 65 etCursor().Paste
0650: 28 29 3b 20 72 65 74 75 72 6e 20 30 3b 0d 0a 09 (); return 0;...
0660: 63 61 73 65 20 45 4d 5f 55 4e 44 4f 3a 0d 0a 09 case EM_UNDO:...
0670: 63 61 73 65 20 57 4d 5f 55 4e 44 4f 3a 20 20 67 case WM_UNDO: g
0680: 65 74 44 6f 63 28 29 2e 55 6e 64 6f 28 29 3b 20 etDoc().Undo();
0690: 20 20 20 20 72 65 74 75 72 6e 20 54 52 55 45 3b return TRUE;
06a0: 0d 0a 09 64 65 66 61 75 6c 74 3a 0d 0a 09 09 72 ...default:....r
06b0: 65 74 75 72 6e 20 57 6e 64 49 6d 70 6c 3a 3a 6f eturn WndImpl::o
06c0: 6e 5f 6d 65 73 73 61 67 65 28 20 6d 73 67 2c 20 n_message( msg,
06d0: 77 70 2c 20 6c 70 20 29 3b 0d 0a 09 7d 0d 0a 09 wp, lp );...}...
06e0: 72 65 74 75 72 6e 20 30 3b 0d 0a 2f 2a 0d 0a 45 return 0;../*..E
06f0: 4d 5f 43 48 41 52 46 52 4f 4d 50 4f 53 20 0d 0a M_CHARFROMPOS ..
0700: 45 4d 5f 45 4d 50 54 59 55 4e 44 4f 42 55 46 46 EM_EMPTYUNDOBUFF
0710: 45 52 3a 0d 0a 45 4d 5f 46 4d 54 4c 49 4e 45 53 ER:..EM_FMTLINES
0720: 20 0d 0a 45 4d 5f 47 45 54 43 55 45 42 41 4e 4e ..EM_GETCUEBANN
0730: 45 52 20 0d 0a 45 4d 5f 47 45 54 46 49 52 53 54 ER ..EM_GETFIRST
0740: 56 49 53 49 42 4c 45 4c 49 4e 45 20 0d 0a 45 4d VISIBLELINE ..EM
0750: 5f 47 45 54 48 41 4e 44 4c 45 20 0d 0a 45 4d 5f _GETHANDLE ..EM_
0760: 47 45 54 49 4d 45 53 54 41 54 55 53 20 0d 0a 45 GETIMESTATUS ..E
0770: 4d 5f 47 45 54 4c 49 4d 49 54 54 45 58 54 20 0d M_GETLIMITTEXT .
0780: 0a 45 4d 5f 47 45 54 4c 49 4e 45 20 0d 0a 45 4d .EM_GETLINE ..EM
0790: 5f 47 45 54 4c 49 4e 45 43 4f 55 4e 54 20 0d 0a _GETLINECOUNT ..
07a0: 45 4d 5f 47 45 54 4d 41 52 47 49 4e 53 20 0d 0a EM_GETMARGINS ..
07b0: 45 4d 5f 47 45 54 4d 4f 44 49 46 59 20 0d 0a 45 EM_GETMODIFY ..E
07c0: 4d 5f 47 45 54 50 41 53 53 57 4f 52 44 43 48 41 M_GETPASSWORDCHA
07d0: 52 20 0d 0a 45 4d 5f 47 45 54 52 45 43 54 20 0d R ..EM_GETRECT .
07e0: 0a 45 4d 5f 47 45 54 53 45 4c 20 0d 0a 45 4d 5f .EM_GETSEL ..EM_
07f0: 47 45 54 54 48 55 4d 42 20 0d 0a 45 4d 5f 47 45 GETTHUMB ..EM_GE
0800: 54 57 4f 52 44 42 52 45 41 4b 50 52 4f 43 20 0d TWORDBREAKPROC .
0810: 0a 45 4d 5f 48 49 44 45 42 41 4c 4c 4f 4f 4e 54 .EM_HIDEBALLOONT
0820: 49 50 20 0d 0a 45 4d 5f 4c 49 4d 49 54 54 45 58 IP ..EM_LIMITTEX
0830: 54 20 0d 0a 45 4d 5f 4c 49 4e 45 46 52 4f 4d 43 T ..EM_LINEFROMC
0840: 48 41 52 20 0d 0a 45 4d 5f 4c 49 4e 45 49 4e 44 HAR ..EM_LINEIND
0850: 45 58 20 0d 0a 45 4d 5f 4c 49 4e 45 4c 45 4e 47 EX ..EM_LINELENG
0860: 54 48 20 0d 0a 45 4d 5f 4c 49 4e 45 53 43 52 4f TH ..EM_LINESCRO
0870: 4c 4c 20 0d 0a 45 4d 5f 50 4f 53 46 52 4f 4d 43 LL ..EM_POSFROMC
0880: 48 41 52 20 0d 0a 45 4d 5f 52 45 50 4c 41 43 45 HAR ..EM_REPLACE
0890: 53 45 4c 20 0d 0a 45 4d 5f 53 43 52 4f 4c 4c 20 SEL ..EM_SCROLL
08a0: 0d 0a 45 4d 5f 53 43 52 4f 4c 4c 43 41 52 45 54 ..EM_SCROLLCARET
08b0: 20 0d 0a 45 4d 5f 53 45 54 43 55 45 42 41 4e 4e ..EM_SETCUEBANN
08c0: 45 52 20 0d 0a 45 4d 5f 53 45 54 48 41 4e 44 4c ER ..EM_SETHANDL
08d0: 45 20 0d 0a 45 4d 5f 53 45 54 49 4d 45 53 54 41 E ..EM_SETIMESTA
08e0: 54 55 53 20 0d 0a 45 4d 5f 53 45 54 4c 49 4d 49 TUS ..EM_SETLIMI
08f0: 54 54 45 58 54 20 0d 0a 45 4d 5f 53 45 54 4d 41 TTEXT ..EM_SETMA
0900: 52 47 49 4e 53 20 0d 0a 45 4d 5f 53 45 54 4d 4f RGINS ..EM_SETMO
0910: 44 49 46 59 20 0d 0a 45 4d 5f 53 45 54 50 41 53 DIFY ..EM_SETPAS
0920: 53 57 4f 52 44 43 48 41 52 20 0d 0a 45 4d 5f 53 SWORDCHAR ..EM_S
0930: 45 54 52 45 43 54 20 0d 0a 45 4d 5f 53 45 54 52 ETRECT ..EM_SETR
0940: 45 43 54 4e 50 20 0d 0a 45 4d 5f 53 45 54 53 45 ECTNP ..EM_SETSE
0950: 4c 20 0d 0a 45 4d 5f 53 45 54 54 41 42 53 54 4f L ..EM_SETTABSTO
0960: 50 53 20 0d 0a 45 4d 5f 53 45 54 57 4f 52 44 42 PS ..EM_SETWORDB
0970: 52 45 41 4b 50 52 4f 43 20 0d 0a 45 4d 5f 53 48 REAKPROC ..EM_SH
0980: 4f 57 42 41 4c 4c 4f 4f 4e 54 49 50 20 0d 0a 57 OWBALLOONTIP ..W
0990: 4d 5f 43 4f 4d 4d 41 4e 44 20 0d 0a 57 4d 5f 43 M_COMMAND ..WM_C
09a0: 54 4c 43 4f 4c 4f 52 45 44 49 54 20 0d 0a 57 4d TLCOLOREDIT ..WM
09b0: 5f 43 54 4c 43 4f 4c 4f 52 53 54 41 54 49 43 20 _CTLCOLORSTATIC
09c0: 0d 0a 2a 2f 0d 0a 7d 0d 0a ..*/..}..