TRUE CONSTANT ENGLISH

\ S" INCLUDE\CORE-EXT.F" INCLUDED
S" INCLUDE\TOOLS.F" INCLUDED
S" SAMPLES\REG.TXT" INCLUDED
\ S" SAMPLES\SOCKETS.TXT" INCLUDED
S" SAMPLES\THREAD.TXT" INCLUDED
DECIMAL

\ --------------------------------------------------------------------------
WINAPI: SetClassLongA           USER32.DLL
WINAPI: MessageBoxA             USER32.DLL
WINAPI: DialogBoxIndirectParamA USER32.DLL
WINAPI: EndDialog               USER32.DLL
WINAPI: SetDlgItemTextA         USER32.DLL
WINAPI: GetDlgItem              USER32.DLL
WINAPI: GetDlgCtrlID            USER32.DLL
WINAPI: SendMessageA            USER32.DLL
WINAPI: SetWindowTextA          USER32.DLL
WINAPI: InitCommonControls      COMCTL32.DLL
WINAPI: LoadImageA              USER32.DLL
\ WINAPI: SelectObject            GDI32.DLL
\ WINAPI: GetDC                   USER32.DLL
\ WINAPI: CreateBitmapIndirect    GDI32.DLL
\ WINAPI: ImageList_Create        COMCTL32.DLL
\ WINAPI: ImageList_AddIcon       COMCTL32.DLL
WINAPI: CreateToolbarEx         COMCTL32.DLL
\ WINAPI: FreeConsole             KERNEL32.DLL
WINAPI: CheckDlgButton          USER32.DLL
WINAPI: IsDlgButtonChecked      USER32.DLL

\ -----------------------

: #define
  CREATE 0 0 BL WORD COUNT
  >NUMBER DUP IF 1- SWAP 1+ SWAP >NUMBER THEN 2DROP D>S ,
  DOES> @
;
HEX
IMAGE-BASE CONSTANT HINST  \ Instance  
       0 CONSTANT HCON     \ hwnd   

\  
  CF0000 CONSTANT WS_OVERLAPPEDWINDOW
10000000 CONSTANT WS_VISIBLE
80000000 CONSTANT WS_POPUP
  800000 CONSTANT WS_BORDER
40000000 CONSTANT WS_CHILD
00C00000 CONSTANT WS_CAPTION
00080000 CONSTANT WS_SYSMENU
00010000 CONSTANT WS_TABSTOP
00020000 CONSTANT WS_GROUP
00040000 CONSTANT WS_SIZEBOX
00100000 CONSTANT WS_HSCROLL
00200000 CONSTANT WS_VSCROLL
      80 CONSTANT DS_MODALFRAME
      40 CONSTANT DS_SETFONT
      80 CONSTANT ES_AUTOHSCROLL
      40 CONSTANT ES_AUTOVSCROLL
    0001 CONSTANT ES_CENTER
    0000 CONSTANT ES_LEFT
    0004 CONSTANT ES_MULTILINE
    0800 CONSTANT ES_READONLY
    0002 CONSTANT ES_RIGHT
    1000 CONSTANT ES_WANTRETURN
    2000 CONSTANT ES_NUMBER
    0002 CONSTANT CBS_DROPDOWN
    0040 CONSTANT CBS_AUTOHSCROLL

\ messages
     111 CONSTANT WM_COMMAND
     110 CONSTANT WM_INITDIALOG
    004E CONSTANT WM_NOTIFY
      0F CONSTANT WM_PAINT
#define WM_CONTEXTMENU                  0x007B
#define WM_SETTEXT                      0x000C
#define WM_GETTEXT                      0x000D
#define WM_CLEAR                        0x0303
#define WM_SYSCOMMAND                   0x0112
#define WM_HELP                         0x0053
#define WM_USER                         0x0400
#define SC_CONTEXTHELP  0xF180
#define ES_PASSWORD         0x0020


0 CONSTANT NM_FIRST
-1 CONSTANT NM_OUTOFMEMORY          ( NM_FIRST-1)
-2 CONSTANT NM_CLICK                ( NM_FIRST-2)
-3 CONSTANT NM_DBLCLK               ( NM_FIRST-3)
-4 CONSTANT NM_RETURN               ( NM_FIRST-4)
-5 CONSTANT NM_RCLICK               ( NM_FIRST-5)
-6 CONSTANT NM_RDBLCLK              ( NM_FIRST-6)
-7 CONSTANT NM_SETFOCUS             ( NM_FIRST-7)
-8 CONSTANT NM_KILLFOCUS            ( NM_FIRST-8)

\ -----------
#define MB_ICONEXCLAMATION          0x00000030
#define MB_ICONASTERISK             0x00000040
       1 CONSTANT IDOK
       2 CONSTANT IDCANCEL
0080 CONSTANT DI_Button 
0081 CONSTANT DI_Edit 
0082 CONSTANT DI_Static 
0083 CONSTANT DI_Listbox 
0084 CONSTANT DI_Scrollbar 
0085 CONSTANT DI_Combobox

        0010 CONSTANT LR_LOADFROMFILE
#define LR_LOADTRANSPARENT  0x0020
        0080 CONSTANT LR_LOADREALSIZE

           0 CONSTANT IMAGE_BITMAP
           1 CONSTANT IMAGE_ICON
           1 CONSTANT ILC_MASK

#define DS_3DLOOK           0x0004
#define DS_FIXEDSYS         0x0008
#define DS_NOFAILCREATE     0x0010
#define DS_CONTROL          0x0400
#define DS_CENTER           0x0800
#define DS_CENTERMOUSE      0x1000
#define DS_CONTEXTHELP      0x2000
#define WS_MINIMIZEBOX      0x00020000
#define WS_MAXIMIZEBOX      0x00010000
#define WS_CLIPSIBLINGS     0x04000000

1000 CONSTANT LVM_FIRST
1100 CONSTANT TV_FIRST

        0001 CONSTANT TVS_HASBUTTONS
        0004 CONSTANT TVS_LINESATROOT
        0002 CONSTANT TVS_HASLINES
#define LVS_ICON                0x0000
#define LVS_REPORT              0x0001
#define LVS_SMALLICON           0x0002
#define LVS_LIST                0x0003
#define LVS_TYPEMASK            0x0003
#define LVS_SINGLESEL           0x0004
#define LVS_SHOWSELALWAYS       0x0008
#define LVS_SORTASCENDING       0x0010
#define LVS_SORTDESCENDING      0x0020
#define LVS_SHAREIMAGELISTS     0x0040
#define LVS_NOLABELWRAP         0x0080
#define LVS_AUTOARRANGE         0x0100
#define LVS_EDITLABELS          0x0200
#define LVS_NOSCROLL            0x2000

#define LVCF_FMT                0x0001
#define LVCF_WIDTH              0x0002
#define LVCF_TEXT               0x0004
#define LVCF_SUBITEM            0x0008

#define LVCFMT_LEFT             0x0000
#define LVCFMT_RIGHT            0x0001
#define LVCFMT_CENTER           0x0002
#define LVCFMT_JUSTIFYMASK      0x0003

#define LVIF_TEXT               0x0001
#define LVIF_IMAGE              0x0002
#define LVIF_PARAM              0x0004
#define LVIF_STATE              0x0008

#define LVSIL_NORMAL            0
#define LVSIL_SMALL             1
#define LVSIL_STATE             2

#define TVIS_EXPANDEDONCE       0x0040

#define EM_GETSEL               0x00B0
#define EM_SETSEL               0x00B1
#define EM_GETRECT              0x00B2
#define EM_SETRECT              0x00B3
#define EM_SETRECTNP            0x00B4
#define EM_SCROLL               0x00B5
#define EM_LINESCROLL           0x00B6
#define EM_SCROLLCARET          0x00B7
#define EM_GETMODIFY            0x00B8
#define EM_SETMODIFY            0x00B9
#define EM_GETLINECOUNT         0x00BA
#define EM_LINEINDEX            0x00BB
#define EM_SETHANDLE            0x00BC
#define EM_GETHANDLE            0x00BD
#define EM_GETTHUMB             0x00BE
#define EM_LINELENGTH           0x00C1
#define EM_REPLACESEL           0x00C2
#define EM_GETLINE              0x00C4
#define EM_LIMITTEXT            0x00C5
#define EM_CANUNDO              0x00C6
#define EM_UNDO                 0x00C7
#define EM_FMTLINES             0x00C8
#define EM_LINEFROMCHAR         0x00C9
#define EM_SETTABSTOPS          0x00CB
#define EM_EMPTYUNDOBUFFER      0x00CD
#define EM_GETFIRSTVISIBLELINE  0x00CE
#define EM_SETREADONLY          0x00CF
#define EM_SETWORDBREAKPROC     0x00D0
#define EM_GETWORDBREAKPROC     0x00D1
#define EM_SETMARGINS           0x00D3
#define EM_GETMARGINS           0x00D4
#define EM_SETLIMITTEXT         0x00C5
#define EM_GETLIMITTEXT         0x00D5
#define EM_POSFROMCHAR          0x00D6
#define EM_CHARFROMPOS          0x00D7

#define TBSTATE_CHECKED         0x01
#define TBSTATE_PRESSED         0x02
#define TBSTATE_ENABLED         0x04
#define TBSTATE_HIDDEN          0x08
#define TBSTATE_INDETERMINATE   0x10
#define TBSTATE_WRAP            0x20

#define TBSTYLE_BUTTON          0x00
#define TBSTYLE_SEP             0x01
#define TBSTYLE_CHECK           0x02
#define TBSTYLE_GROUP           0x04

#define TBSTYLE_TOOLTIPS        0x0100
#define TBSTYLE_WRAPABLE        0x0200
#define TBSTYLE_ALTDRAG         0x0400

#define TVGN_CARET              0x0009

#define TVE_COLLAPSE            0x0001
#define TVE_EXPAND              0x0002
#define TVE_TOGGLE              0x0003
#define TVE_COLLAPSERESET       0x8000

#define BS_AUTOCHECKBOX     0x00000003
#define DELETE              0x00010000

#define CB_ADDSTRING                0x0143
#define CB_FINDSTRINGEXACT          0x0158
#define CB_SETCURSEL                0x014E
#define CB_GETCOUNT                 0x0146
#define CB_GETLBTEXT                0x0148
#define CB_SELECTSTRING             0x014D

-1 CONSTANT CB_ERR
7 CONSTANT BS_GROUPBOX


FFFF0000 CONSTANT TVI_ROOT
FFFF0001 CONSTANT TVI_FIRST
FFFF0002 CONSTANT TVI_LAST
FFFF0003 CONSTANT TVI_SORT
        0001 CONSTANT TVIF_TEXT
        0002 CONSTANT TVIF_IMAGE
        0004 CONSTANT TVIF_PARAM
        0008 CONSTANT TVIF_STATE
        0010 CONSTANT TVIF_HANDLE
        0020 CONSTANT TVIF_SELECTEDIMAGE
        0040 CONSTANT TVIF_CHILDREN

\ --------------------------------------------------------
\ *******       
0
4 -- DLGTEMPLATE.style
4 -- DLGTEMPLATE.dwExtendedStyle
2 -- DLGTEMPLATE.cdit
2 -- DLGTEMPLATE.x
2 -- DLGTEMPLATE.y
2 -- DLGTEMPLATE.cx
2 -- DLGTEMPLATE.cy
CONSTANT /DLGTEMPLATE

0
4 -- DLGITEMTEMPLATE.style
4 -- DLGITEMTEMPLATE.dwExtendedStyle
2 -- DLGITEMTEMPLATE.x
2 -- DLGITEMTEMPLATE.y
2 -- DLGITEMTEMPLATE.cx
2 -- DLGITEMTEMPLATE.cy
2 -- DLGITEMTEMPLATE.id
CONSTANT /DLGITEMTEMPLATE

: DIALOG: ( x y cx cy cdit style "name" -- )
  CREATE HERE 0 ,
  HERE 7 + 8 / 8 * HERE - ALLOT
  HERE SWAP !
  HERE DUP >R /DLGTEMPLATE DUP ALLOT ERASE
\  [ HEX ] 10501 [ DECIMAL ] R@ DLGTEMPLATE.dwExtendedStyle !
  R@ DLGTEMPLATE.style !
  R@ DLGTEMPLATE.cdit W!
  R@ DLGTEMPLATE.cy W!
  R@ DLGTEMPLATE.cx W!
  R@ DLGTEMPLATE.y W!
  R> DLGTEMPLATE.x W!
  0 W, \ menu  (no menu)
  0 W, \ class (def)
\  0 W, \ title (no title)
\  8 W,
;

: L" ( "ccc" -- ) \ *******    UNICODE
  [CHAR] " PARSE \ DUP >R
  0 ?DO DUP I + C@ W, LOOP DROP 0 W,
\  R> 2 MOD 0 = IF 0 W, THEN
;
: DIALOGITEM ( x y cx cy id style class -- ) \ *******  
  >R
  HERE DUP >R /DLGITEMTEMPLATE DUP ALLOT ERASE
  R@ DLGITEMTEMPLATE.style !
  R@ DLGITEMTEMPLATE.id W!
  R@ DLGITEMTEMPLATE.cy W!
  R@ DLGITEMTEMPLATE.cx W!
  R@ DLGITEMTEMPLATE.y W!
  R> DLGITEMTEMPLATE.x W!
  -1 W, R> W, \ class
  0 W,             \ title (initial text)
  0 ,             \ creation data
;
\ -----------------    ------------------------------
DECIMAL
0
(
1 + DUP 200 + CONSTANT 
1 + DUP 200 + CONSTANT 
)

1 + DUP CONSTANT Group1
1 + DUP CONSTANT Group2
1 + DUP CONSTANT Group3
1 + DUP CONSTANT ButtonOK
1 + DUP CONSTANT ButtonInstall
1 + DUP CONSTANT ButtonCancel
1 + DUP CONSTANT Text1
1 + DUP CONSTANT Text2
1 + DUP CONSTANT Text3
1 + DUP CONSTANT Text4
1 + DUP CONSTANT Text5
1 + DUP CONSTANT Text6
1 + DUP CONSTANT Text7
1 + DUP CONSTANT Text8
1 + DUP CONSTANT Text9
1 + DUP CONSTANT Text10
1 + DUP CONSTANT Text11
1 + DUP CONSTANT Text12
1 + DUP CONSTANT Text13
1 + DUP CONSTANT Text14
1 + DUP CONSTANT Text15
1 + DUP CONSTANT Text16
1 + DUP CONSTANT Text17
1 + DUP CONSTANT Text18
1 + DUP CONSTANT Text19
1 + DUP CONSTANT Text20
1 + DUP CONSTANT Text21
1 + DUP CONSTANT Text22
1 + DUP CONSTANT EditDomain
1 + DUP CONSTANT EditSMTPport
1 + DUP CONSTANT EditPOP3port
1 + DUP CONSTANT EditHTTPport
1 + DUP CONSTANT EditNNTPport
1 + DUP CONSTANT EditSMTPs
1 + DUP CONSTANT EditSMTPp
1 + DUP CONSTANT EditPOP3s
1 + DUP CONSTANT EditPOP3p
1 + DUP CONSTANT EditNNTPs
1 + DUP CONSTANT EditNNTPp
1 + DUP CONSTANT EditPOP3login
1 + DUP CONSTANT EditPOP3passw
1 + DUP CONSTANT EditPPPlogin
1 + DUP CONSTANT EditPPPpassw
1 + DUP CONSTANT EditTel
1 + DUP CONSTANT EditInt
1 + DUP CONSTANT EditLen
1 + DUP CONSTANT Combo1
1 + DUP CONSTANT ButDisDial
1 + DUP CONSTANT ButDisSch
1 + DUP CONSTANT EditService

CONSTANT 

0 0 272 ( 225) 245 
 DS_MODALFRAME  WS_POPUP OR  WS_VISIBLE OR
 WS_CAPTION OR  WS_SYSMENU OR
 DS_SETFONT OR 
 DS_CENTER OR
 DS_CONTEXTHELP OR
\ WS_MINIMIZEBOX OR
 WS_CLIPSIBLINGS OR


DIALOG: DLG
L" E-serv setup" 8 W,
L" MS Sans Serif" 0 W,  (  204 W,)

3 18 115 100 Group1
WS_VISIBLE WS_CHILD OR BS_GROUPBOX OR
DI_Button DIALOGITEM

120 18 149 100 Group2
WS_VISIBLE WS_CHILD OR BS_GROUPBOX OR
DI_Button DIALOGITEM

3 120 266 84 Group3
WS_VISIBLE WS_CHILD OR BS_GROUPBOX OR
DI_Button DIALOGITEM

121 ( 207) 227 40 14 ButtonOK
WS_VISIBLE WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

225 227 43 14 ButtonCancel
WS_VISIBLE WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

164 227 59 14 ButtonInstall
WS_VISIBLE WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

7 6 268 12 Text1
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 30 29 12 Text2
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 59 41 12 Text3
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 74 42 12 Text4
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 89 44 12 Text5
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 104 44 12 Text21
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 132 127 12 Text6
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 30 34 12 Text7
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

185 30 25 12 Text8
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

235 30 25 13 Text9
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 44 30 12 Text10
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 59 31 12 Text11
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 74 30 12 Text22
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 89 42 15 Text12
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

127 104 54 8 Text13
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 156 40 12 Text14
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

133 156 51 8 Text15
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 173 36 8 Text16
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 189 94 8 Text17
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

139 189 96 8 Text18
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

37 30 77 24 EditDomain
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR \ ES_AUTOHSCROLL OR ES_AUTOVSCROLL OR
WS_VSCROLL OR
DI_Edit DIALOGITEM
\ -6 ALLOT L" test" 0 ,

56 58 32 12 EditSMTPport
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

56 73 32 12 EditPOP3port
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

56 88 32 12 EditHTTPport
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

56 103 32 12 EditNNTPport
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

162 43 64 12 EditSMTPs
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

230 43 33 12 EditSMTPp
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

162 58 64 12 EditPOP3s
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

230 58 33 12 EditPOP3p
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

162 73 64 12 EditNNTPs
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

230 73 33 12 EditNNTPp
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR
DI_Edit DIALOGITEM

185 88 78 12 EditPOP3login
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

185 103 78 12 EditPOP3passw
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
\ ES_MULTILINE OR 
ES_PASSWORD OR
DI_Edit DIALOGITEM

137 131 92 51 Combo1
WS_VISIBLE WS_CHILD OR  WS_TABSTOP OR
CBS_DROPDOWN OR WS_VSCROLL OR CBS_AUTOHSCROLL OR
DI_Combobox DIALOGITEM

47 154 76 12 EditPPPlogin
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

186 154 77 12 EditPPPpassw
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
\ ES_MULTILINE OR 
ES_PASSWORD OR
DI_Edit DIALOGITEM

47 171 216 12 EditTel
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
DI_Edit DIALOGITEM

103 187 19 12 EditInt
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR ES_AUTOHSCROLL OR
\ ES_NUMBER OR
DI_Edit DIALOGITEM

123 189 12 8 Text19
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

237 187 13 12 EditLen
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR
ES_NUMBER OR ES_AUTOHSCROLL OR
DI_Edit DIALOGITEM

252 189 12 8 Text20
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

7 207 130 12 ButDisDial
WS_VISIBLE  WS_CHILD OR WS_TABSTOP OR
BS_AUTOCHECKBOX OR
DI_Button DIALOGITEM

140 207 130 12 ButDisSch
WS_VISIBLE  WS_CHILD OR WS_TABSTOP OR
BS_AUTOCHECKBOX OR
DI_Button DIALOGITEM

7 227 100 12 EditService
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR ES_AUTOHSCROLL OR
DI_Edit DIALOGITEM

\ --------------------------- dlg1 -----------
DECIMAL
0
1 + DUP CONSTANT Dlg1Image
1 + DUP CONSTANT Dlg1Text
1 + DUP CONSTANT Dlg1Text1
1 + DUP CONSTANT Dlg1Text2
1 + DUP CONSTANT Dlg1Edit1
1 + DUP CONSTANT Dlg1Edit2
1 + DUP CONSTANT Dlg1ButNext
1 + DUP CONSTANT Dlg1ButBack
1 + DUP CONSTANT Dlg1ButCancel
CONSTANT Dlg1

0 0 255 165 Dlg1
 DS_MODALFRAME  WS_POPUP OR  WS_VISIBLE OR
 WS_CAPTION OR  WS_SYSMENU OR
 DS_SETFONT OR 
 DS_CENTER OR
 DS_CONTEXTHELP OR
 WS_CLIPSIBLINGS OR


DIALOG: DLG1
L" E-serv setup" 8 W,
L" MS Sans Serif" 0 W,  (  204 W,)

5 7 94 151 Dlg1Image
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

111 6 139 100 Dlg1Text
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

15  113 90 12 Dlg1Text1
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

15  128 90 40 Dlg1Text2
WS_VISIBLE WS_CHILD OR
DI_Static DIALOGITEM

111 112 139 12 Dlg1Edit1
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR ES_AUTOHSCROLL OR
DI_Edit DIALOGITEM

111 127 139 12 Dlg1Edit2
WS_VISIBLE  WS_CHILD OR WS_BORDER OR WS_TABSTOP OR
ES_MULTILINE OR ES_AUTOHSCROLL OR
DI_Edit DIALOGITEM

111 145 44 14 Dlg1ButBack
WS_VISIBLE  WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

158 145 45 14 Dlg1ButNext
WS_VISIBLE  WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

205 145 45 14 Dlg1ButCancel
WS_VISIBLE  WS_CHILD OR WS_TABSTOP OR
DI_Button DIALOGITEM

\ ---------------------------  
0 VALUE 
0 VALUE 

:  ( id -- hwnd )
   GetDlgItem 
;
: ID ( hwnd -- id )
  GetDlgCtrlID
;
:  ( lparam wparam msg id -- lresult )
   SendMessageA
;
\ ----------  Notification Messages ------
0
4 -- NMHDR.hwndFrom
4 -- NMHDR.idFrom
4 -- NMHDR.code
CONSTANT /NMHDR

0
4 -- POINT.x
4 -- POINT.y
CONSTANT /POINT

0
/NMHDR -- LV_KEYDOWN.hdr
     2 -- LV_KEYDOWN.wVKey
     4 -- LV_KEYDOWN.flags
CONSTANT /LV_KEYDOWN


\ ---------------------------------------------------------------------------

HEX
#define OFN_NOCHANGEDIR              0x00000008
#define OFN_CREATEPROMPT             0x00002000
#define OFN_EXPLORER                 0x00080000
DECIMAL

0
4 -- OF.lStructSize
4 -- OF.hwndOwner
4 -- OF.hInstance
4 -- OF.lpstrFilter
4 -- OF.lpstrCustomFilter
4 -- OF.nMaxCustFilter
4 -- OF.nFilterIndex
4 -- OF.lpstrFile
4 -- OF.nMaxFile
4 -- OF.lpstrFileTitle
4 -- OF.nMaxFileTitle
4 -- OF.lpstrInitialDir
4 -- OF.lpstrTitle
4 -- OF.Flags
2 -- OF.nFileOffset
2 -- OF.nFileExtension
4 -- OF.lpstrDefExt
4 -- OF.lCustData
4 -- OF.lpfnHook
4 -- OF.lpTemplateName
CONSTANT /OPENFILENAME
 
: S, ( addr u -- )
  HERE SWAP DUP ALLOT MOVE
;
CREATE O.F HERE /OPENFILENAME DUP ALLOT ERASE
/OPENFILENAME O.F OF.lStructSize !
HERE O.F OF.lpstrFilter !
S"   (*.*)" S, 0 C, S" *.*" S, 0 W,
1 O.F OF.nFilterIndex !
OFN_CREATEPROMPT OFN_EXPLORER OR OFN_NOCHANGEDIR OR O.F OF.Flags !

WINAPI: GetOpenFileNameA COMDLG32.DLL
:  ( -- flag )
  HERE O.F OF.lpstrFile ! HERE 0!
  500 O.F OF.nMaxFile ! O.F GetOpenFileNameA
;
\ ---------------------------------------------------------------------------
:  ( addr u id -- )
  \           
  >R
  DROP 1 EM_REPLACESEL R>  DROP
;
:  ( id -- )
  >R 0 1 EM_SETREADONLY R>  DROP
;
:  ( id -- )
  >R 0 0 EM_SETREADONLY R>  DROP
;
\ --------------------------------------------------------

:  ( c-addr u id -- )
  >R 2DUP + 0 SWAP C! R>
  NIP  SetDlgItemTextA DROP
;
:  ( c-addr u id -- )
  >R
  R/O OPEN-FILE THROW >R
  HERE 10000 R@ READ-FILE THROW HERE + 0!
  R> CLOSE-FILE THROW
  HERE 10000 R> 
;
: 
  2DUP + 0 SWAP C!
  DROP  SetWindowTextA DROP
;

\    Windows    CASE-

VOCABULARY Windows
VOCABULARY Windows1

: M: ( "WM_..." -- )
  \   
  BASE @ >R HEX
  ' EXECUTE 0 <# [CHAR] m HOLD # # # #  # # # # BL HOLD [CHAR] : HOLD #>
  EVALUATE
  R> BASE !
;
: C:
  BASE @ >R HEX
  ' EXECUTE 0 <# #S [CHAR] c HOLD BL HOLD [CHAR] : HOLD #>
  EVALUATE
  R> BASE !
;
: :: CREATE ;
: H:
  BASE @ >R HEX
  ' EXECUTE 0 <# #S [CHAR] h HOLD BL HOLD [CHAR] : DUP HOLD HOLD #>
  EVALUATE BL SKIP 1 WORD ", 0 C,
  R> BASE !
;
:  ( lparam wparam uint=msg hwnd wid -- TRUE | -"- FALSE )
  \     
  100 ALLOT
  >R
  BASE @ >R HEX
  OVER 0 <# [CHAR] m HOLD # # # #  # # # # #>
  R> BASE !
  -100 ALLOT
  R> SEARCH-WORDLIST
  IF EXECUTE  ELSE FALSE THEN
;
VARIABLE 
: 
  DROP
  MB_ICONASTERISK S" " DROP
  ROT  MessageBoxA DROP
;
:  ( ERRNO -- )
  >R S"         "
  OVER 24 + DUP 4 BL FILL
  R> 0
  BASE @ >R HEX <# # # # # #> R> BASE !
  ROT SWAP MOVE
  
;
: LOAD-ICON16 ( c-addr u -- hicon ) \      *.ico
  DROP >R
  LR_LOADFROMFILE 16 16 IMAGE_ICON R> 0 LoadImageA
;
: GetText ( id -- )
  >R TIB C/L WM_GETTEXT R>  #TIB ! >IN 0!
;
: GT GetText SOURCE TYPE CR ;

S" SAMPLES\SERVICES.TXT" INCLUDED

WINAPI: GetCurrentDirectoryA         KERNEL32.DLL
WINAPI: OpenServiceA                 ADVAPI32.DLL
WINAPI: DeleteService                ADVAPI32.DLL
WINAPI: CloseServiceHandle           ADVAPI32.DLL

VARIABLE ServiceName HERE ServiceName ! C" E-serv" ", 0 ,

: DeleteEservService
  ( SERVICE_ALL_ACCESS) DELETE ServiceName @ COUNT DROP
  SC_MANAGER_ALL_ACCESS 0 0 OpenSCManagerA DUP >R
  OpenServiceA DUP >R DeleteService
  R> CloseServiceHandle DROP
  R> CloseServiceHandle DROP
;

: HOLDS ( addr u -- )
  SWAP OVER + SWAP 0 ?DO DUP I - 1- C@ HOLD LOOP DROP
;

: CreateService
  DeleteEservService DROP
  0 0 0 0 0
  0 0 <# 0 HOLD
\       HERE 256 GetCurrentDirectoryA HERE SWAP HOLDS 
\       BL HOLD
       S" \E-serv.exe" HOLDS
       HERE 256 GetCurrentDirectoryA HERE SWAP HOLDS 
      #>
  DROP
  SERVICE_ERROR_NORMAL S_AUTO \ SERVICE_DEMAND_START 
  SERVICE_WIN32_OWN_PROCESS SERVICE_ALL_ACCESS
  ServiceName @ COUNT DROP
  ServiceName @ COUNT DROP
  SC_MANAGER_ALL_ACCESS 0 0 OpenSCManagerA
  CreateServiceA
;
\ --------------------------------------------------------
WINAPI: RasEnumEntriesA RASAPI32.DLL
264 CONSTANT EntryNameSize
VARIABLE Entry#
CREATE EntryS 100000 ,

: OPEN/CREATE-FILE ( c-addr u fam -- fileid ior )
  >R 2DUP R@ OPEN-FILE
  IF DROP R> CREATE-FILE
  ELSE R> DROP >R 2DROP R> 0 THEN
;

H: EditDomain    .      .
H: EditSMTPport    SMTP-.   - 25. SMTP-         .
H: EditPOP3port    POP3-.   - 110. POP3- ""    .
H: EditHTTPport    HTTP-.         .
H: EditNNTPport    NNTP-.           .
H: EditSMTPs      ,     ,    .
H: EditSMTPp      SMTP- .   - 25.
H: EditPOP3s      ,      (   POP3),    .
H: EditPOP3p      POP3- .   - 110.
H: EditNNTPs     NNTP- ,      .
H: EditNNTPp      NNTP- .   - 119.
H: EditPOP3login      ,    .
H: EditPOP3passw         .
H: Combo1          ,      .
H: EditPPPlogin          PPP.
H: EditPPPpassw          PPP.
H: EditTel        ( !)     ,  *,     .
H: EditInt              / ,     :  .
H: EditLen            (     ).
H: EditService  ,    E-serv    Windows NT.
H: Text1        E-serv 1.1  Copyright (C) 1996-97 .  andrey@cherezov.koenig.su
H: ButDisDial    ,          (  Poll.bat...)
H: ButDisSch     ,     .

: TEXT:
  BEGIN
    REFILL SOURCE NIP 0<> AND
  WHILE
    CREATE 0 , 0 , 0 ,
  REPEAT POSTPONE \
;
TEXT:
I-NAME &
I-COMPANY &
I-DOMAIN &
I-ALIAS &  
I-POP3S &  POP3
I-POP3P &   POP3
I-POP-USER &  POP3
I-POP-PASS &
I-SMTPS &  SMTP
I-SMTPP &   SMTP
I-NNTPS &  NNTP
I-NNTPP &   NNTP
I-CONNECTION &
I-TEL &
I-PPP-LOGIN & 
I-PPP-PASS &
I-TIME &  
I-TIMEOUT &   (  )
I-LOCALPOP3P   &POP3
I-LOCALSMTPP   &SMTP
I-LOCALNNTPP   &NNTP
I-LOCALHTTPP   &HTTP (Web)
I-SERVICE
I-1

VARIABLE VDisDial
VARIABLE VDisSch

: SetDlg ( I-addr D-addr -- )
  SWAP @ ?DUP IF COUNT ELSE S" " THEN -TRAILING ROT 
;
: +SetDlg ( I-addr D-addr -- )
  DUP GetText SWAP @ ?DUP
  IF SOURCE + BL SWAP C! COUNT SOURCE + 1+ SWAP DUP 1+ #TIB +! MOVE SOURCE
  ELSE S" " THEN -TRAILING ROT 
;
\ ---------------------------------------------------------------------------------
\   

ALSO Windows DEFINITIONS

C: IDCANCEL \   
    EndDialog ( true ) DROP
;
C: ButtonCancel
    EndDialog ( true ) DROP
;
C: ButtonOK
   S" E-serv.ini" R/W CREATE-FILE
   IF DROP S"     E-serv.ini!" 
   ELSE H-STDOUT >R
   TO H-STDOUT
   ." ( E-serv v1.1 config )" CR
   I-NAME    @ ?DUP IF ." \ " COUNT TYPE CR THEN
   I-COMPANY @ ?DUP IF ." \ " COUNT TYPE CR THEN
   CR
   ." Domain: " EditDomain GT
   ." SMTPport: " EditSMTPport GT
   ." POP3port: " EditPOP3port GT
   ." HTTPport: " EditHTTPport GT
   ." NNTPport: " EditNNTPport GT CR
   ." PPPserver: " Combo1 GT
   ." Phones: " EditTel GT
   EditInt GetText SOURCE S" :" SEARCH NIP NIP
   IF ." Poll: " ELSE ." PollInterval: " THEN SOURCE TYPE CR
   ." MaxSessionTime: " EditLen GT
   ." PPPlogin: " EditPPPlogin GetText SOURCE TYPE SPACE
   EditPPPpassw GT CR
   ." SMTPserver: " EditSMTPs GetText SOURCE TYPE SPACE
   EditSMTPp GT
   ." POP3server: " EditPOP3s GetText SOURCE TYPE SPACE
   EditPOP3p GT
   ." NNTPserver: " EditNNTPs GetText SOURCE TYPE SPACE
   EditNNTPp GT
   ." POP3login: " EditPOP3login GetText SOURCE TYPE SPACE
   EditPOP3passw GT CR
   ButDisDial  IsDlgButtonChecked
   IF ." DisableDial" CR THEN
   ButDisSch  IsDlgButtonChecked
   IF ." DisableSchedule" CR THEN
   ." ServiceName: " EditService GT
   H-STDOUT CLOSE-FILE DROP R> TO H-STDOUT
   S"    E-serv.ini" 

   HERE ServiceName ! EditService GetText SOURCE DUP C,
   HERE SWAP DUP ALLOT MOVE 0 ,

   CreateService
   IF S" E-serv    WindowsNT.   SETUP        ."
      
   ELSE S"    E-serv    WindowsNT.     Windows 95.  - E-serv.exe." 
      
        S"        E-serv   ''." 
      
   THEN
   REG
    EndDialog ( true ) DROP
   THEN
;
C: ButtonInstall
   HERE ServiceName ! EditService GetText SOURCE DUP C,
   HERE SWAP DUP ALLOT MOVE 0 ,

   DeleteEservService
   IF S"  E-Serv      ."
   ELSE S"  E-Serv     ( -     WindowsNT   )." THEN
   
    EndDialog ( true ) DROP
;
M: WM_SYSCOMMAND
   2>R DUP 2R> ROT 
   SC_CONTEXTHELP = IF ( ." CONTEXTHELP ") THEN
   0
;
M: WM_HELP
   2DROP DROP CELL+ CELL+ @
   BASE @ >R HEX
   0 <# #S [CHAR] h HOLD #>
   R> BASE ! FORTH-WORDLIST SEARCH-WORDLIST
   IF EXECUTE COUNT ELSE S"     ." THEN
   
   TRUE
;
M: WM_COMMAND ( lparam wparam uint=msg hwnd -- TRUE )
   DUP TO 
   BASE @ >R HEX 2>R
\   ." WM_COMMAND: WPARAM: " DUP 0 <# # # # # [CHAR] . HOLD # # # # #> TYPE CR
   DUP 0 <# #S [CHAR] c HOLD #> ALSO Windows CONTEXT @ PREVIOUS
   SEARCH-WORDLIST
   IF >R 2DROP R> 2R> 2DROP R> BASE ! EXECUTE TRUE
   ELSE 2R> R> BASE ! FALSE THEN
;

ENGLISH 0= [IF]
M: WM_INITDIALOG ( lparam wparam uint=msg hwnd -- TRUE )
   TO  DROP 2DROP

   S" E-serv.ICO" LOAD-ICON16 -14  SetClassLongA DROP

   EntryNameSize PAD !
   Entry# EntryS PAD 0 0 RasEnumEntriesA 0= Entry# @ 0<> AND
   IF
     Entry# @ 0 ?DO
       PAD I EntryNameSize * + CELL+
       0 CB_ADDSTRING Combo1  DROP
     LOOP
   ELSE
     S"    ?!" DROP
     0 CB_ADDSTRING Combo1  DROP
   THEN
   0 0 CB_SETCURSEL Combo1  DROP
   S"  "     Group1   
   S"  "     Group2   
   S"   Internet" Group3   
   S" Install"                    ButtonOK 
   S" Cancel"                ButtonCancel 
   S" Uninstall"               ButtonInstall 

   S"    E-serv 1.1" Text1 
   S" " Text2 
   S" SMTP " Text3 
   S" POP3 " Text4 
   S" HTTP " Text5 
   S" NNTP " Text21 
   S"   (PPP-)" Text6 
   S" " Text7 
   S" " Text8 
   S" " Text9 
   S" SMTP" Text10 
   S" POP3" Text11 
   S" NNTP" Text22 
   S" POP3 login" Text12 
   S" POP3 password" Text13 
   S" PPP login" Text14 
   S" PPP password" Text15 
   S" " Text16 
   S"   " Text17 
   S" .  " Text18 
   S" min" Text19 
   S" min" Text20 
   S"   " ( Text21) ButDisDial 
   S"   " ( Text22) ButDisSch 
   S" E-serv" EditService 

   VDisDial @ ButDisDial  CheckDlgButton DROP
   VDisSch  @ ButDisSch   CheckDlgButton DROP
   I-LOCALSMTPP EditSMTPport SetDlg
   I-LOCALPOP3P EditPOP3port SetDlg
   I-LOCALHTTPP EditHTTPport SetDlg
   I-LOCALNNTPP EditNNTPport SetDlg
   I-DOMAIN     EditDomain   SetDlg
   I-ALIAS      EditDomain   +SetDlg
   I-SERVICE    EditService  SetDlg
   I-CONNECTION @ ?DUP
   IF COUNT DROP -1 CB_SELECTSTRING Combo1  DROP THEN
   I-SMTPS      EditSMTPs    SetDlg
   I-SMTPP      EditSMTPp    SetDlg
   I-POP3S      EditPOP3s    SetDlg
   I-POP3P      EditPOP3p    SetDlg
   I-NNTPS      EditNNTPs    SetDlg
   I-NNTPP      EditNNTPp    SetDlg
   I-POP-USER   EditPOP3login SetDlg
   I-POP-PASS   EditPOP3passw SetDlg
   I-PPP-LOGIN  EditPPPlogin SetDlg
   I-PPP-PASS   EditPPPpassw SetDlg
   I-TEL        EditTel      SetDlg
   I-TIME       EditInt      SetDlg
   I-TIMEOUT    EditLen      SetDlg
   TRUE
;
[ELSE]
M: WM_INITDIALOG ( lparam wparam uint=msg hwnd -- TRUE )
   TO  DROP 2DROP

   S" E-serv.ICO" LOAD-ICON16 -14  SetClassLongA DROP

   EntryNameSize PAD !
   Entry# EntryS PAD 0 0 RasEnumEntriesA 0= Entry# @ 0<> AND
   IF
     Entry# @ 0 ?DO
       PAD I EntryNameSize * + CELL+
       0 CB_ADDSTRING Combo1  DROP
     LOOP
   ELSE
     S" Dial-up networking isn't configured?!" DROP
     0 CB_ADDSTRING Combo1  DROP
   THEN
   0 0 CB_SETCURSEL Combo1  DROP
   S" Local server"     Group1   
   S" Provider's server"     Group2   
   S" Internet connection" Group3   
   S" Install"                    ButtonOK 
   S" Cancel"                ButtonCancel 
   S" Uninstall"               ButtonInstall 

   S" E-serv Mail and News Server 1.1 Setup" Text1 
   S" Domain" Text2 
   S" SMTP port" Text3 
   S" POP3 port" Text4 
   S" HTTP port" Text5 
   S" NNTP port" Text21 
   S" Connection name (PPP-server)" Text6 
   S" Server" Text7 
   S" Name" Text8 
   S" Port" Text9 
   S" SMTP" Text10 
   S" POP3" Text11 
   S" NNTP" Text22 
   S" POP3 login" Text12 
   S" POP3 password" Text13 
   S" PPP login" Text14 
   S" PPP password" Text15 
   S" Phones" Text16 
   S" Dial interval or schedule:" Text17 
   S" Session timeout:" Text18 
   S" min" Text19 
   S" min" Text20 
   S" Disable autodialing" ( Text21) ButDisDial 
   S" Disable scheduler" ( Text22) ButDisSch 
   S" E-serv" EditService 

   VDisDial @ ButDisDial  CheckDlgButton DROP
   VDisSch  @ ButDisSch   CheckDlgButton DROP
   I-LOCALSMTPP EditSMTPport SetDlg
   I-LOCALPOP3P EditPOP3port SetDlg
   I-LOCALHTTPP EditHTTPport SetDlg
   I-LOCALNNTPP EditNNTPport SetDlg
   I-DOMAIN     EditDomain   SetDlg
   I-ALIAS      EditDomain   +SetDlg
   I-SERVICE    EditService  SetDlg
   I-CONNECTION @ ?DUP
   IF COUNT DROP -1 CB_SELECTSTRING Combo1  DROP THEN
   I-SMTPS      EditSMTPs    SetDlg
   I-SMTPP      EditSMTPp    SetDlg
   I-POP3S      EditPOP3s    SetDlg
   I-POP3P      EditPOP3p    SetDlg
   I-NNTPS      EditNNTPs    SetDlg
   I-NNTPP      EditNNTPp    SetDlg
   I-POP-USER   EditPOP3login SetDlg
   I-POP-PASS   EditPOP3passw SetDlg
   I-PPP-LOGIN  EditPPPlogin SetDlg
   I-PPP-PASS   EditPPPpassw SetDlg
   I-TEL        EditTel      SetDlg
   I-TIME       EditInt      SetDlg
   I-TIMEOUT    EditLen      SetDlg
   TRUE
;

[THEN]
PREVIOUS DEFINITIONS
\ ---------------------------------------------------------------------------
5 CONSTANT WM_SIZE

0
4 -- TBBUTTON.iBitmap
4 -- TBBUTTON.idCommand
1 -- TBBUTTON.fsState
1 -- TBBUTTON.fsStyle
1 -- TBBUTTON.bReserved1
1 -- TBBUTTON.bReserved2
4 -- TBBUTTON.dwData
4 -- TBBUTTON.iString
CONSTANT /TBBUTTON

: TB-BUTTON ( idCommand iBitmap -- )
  HERE DUP >R /TBBUTTON DUP ALLOT ERASE
  R@ TBBUTTON.iBitmap !
  R@ TBBUTTON.idCommand !
  TBSTYLE_BUTTON R@ TBBUTTON.fsStyle C!
  TBSTATE_ENABLED R@ TBBUTTON.fsState C!
  R> DROP
;
: 
  HERE DUP >R /TBBUTTON DUP ALLOT ERASE
  TBSTYLE_SEP R> TBBUTTON.fsStyle C!
;
100 CONSTANT Image

CREATE TBBUTTONS
Image                0 TB-BUTTON

: LOAD-BMP ( addr u -- himage )
  2>R
  LR_LOADFROMFILE 132 130 IMAGE_BITMAP
  2R> DROP 0 LoadImageA
;
: Toolbar ( addr u -- )
  2>R
  /TBBUTTON 132 130 132 130 1 TBBUTTONS
  2R> LOAD-BMP
  0 1 100 WS_CHILD WS_VISIBLE OR Dlg1Image  CreateToolbarEx >R
  132 65536 * 130 + 0 WM_SIZE R> SendMessageA DROP
;
\ ---------------------------------------------------------------------------
: WORD:
  0 0 BL WORD COUNT >NUMBER 2DROP D>S
;
VARIABLE IDLG-LIST
VARIABLE DLG#
: IDIALOG:
  HERE IDLG-LIST @ , WORD: , IDLG-LIST !
  REFILL DROP ' EXECUTE , 1 WORD ", 0 C,
  REFILL DROP ' EXECUTE , 1 WORD ", 0 C,
  BEGIN
    REFILL SOURCE S" ." COMPARE 0<> AND
  WHILE
    SOURCE DUP 0=
    IF 2DROP 13 C, 10 C,
    ELSE HERE SWAP DUP ALLOT MOVE BL C, THEN
  REPEAT 0 C, POSTPONE \
;
VARIABLE TEXT1
VARIABLE TEXT2

: PROCESS-DLG ( addr -- )
  DUP IDLG-LIST @ = IF S" Finish" ELSE S" Next>" THEN Dlg1ButNext 
  CELL+ CELL+
  DUP @ DUP TEXT1 ! @ ?DUP IF COUNT ELSE S" " THEN Dlg1Edit1 
      CELL+ COUNT 2DUP Dlg1Text1  + CHAR+
  DUP @ DUP TEXT2 ! @ ?DUP IF COUNT ELSE S" " THEN Dlg1Edit2 
      CELL+ COUNT 2DUP Dlg1Text2  + CHAR+
  ASCIIZ> Dlg1Text 
;
: -DLG
  IDLG-LIST @
  BEGIN
    DUP
  WHILE
    DUP CELL+ @ DLG# @ =
    IF PROCESS-DLG EXIT THEN
    @
  REPEAT DROP DLG# @ 1- 1 MAX DLG# !
   EndDialog DROP
;
: GET-TEXT
  TEXT1 @ 0= IF EXIT THEN
  Dlg1Edit1 GetText HERE TEXT1 @ ! SOURCE DUP C,
  HERE OVER ALLOT SWAP MOVE 0 C,
  Dlg1Edit2 GetText HERE TEXT2 @ ! SOURCE DUP C,
  HERE OVER ALLOT SWAP MOVE 0 C,
;
: NEXT-DLG
  GET-TEXT
  DLG# 1+! -DLG
;
: PREV-DLG
  GET-TEXT
  DLG# @ 1-
  DUP 0 > IF DLG# ! -DLG ELSE DROP THEN
;

ENGLISH [IF] S" SAMPLES\INST-ENG.TXT" INCLUDED [ELSE]
IDIALOG: 1
I-NAME &
I-COMPANY &
     
E-serv v1.1s1R
Copyright (C) 1997 Etype Co.  


        ,
   "Back".


    
.
.

IDIALOG: 2
I-DOMAIN &
I-ALIAS &  
          .


    

postmaster@test.koenig.su

   

test.koenig.su


    .
.
IDIALOG: 3
I-POP3S &  POP3
I-POP3P &   POP3
        
 Internet,      
 ,    POP3.


      POP3   ,
 ""  .     
POP3 110.
.

IDIALOG: 4
I-POP-USER &  POP3
I-POP-PASS &
 POP3,       ,
          .
.

IDIALOG: 5
I-SMTPS &  SMTP
I-SMTPP &   SMTP
       
  Internet,    SMTP.


      SMTP   ,
 ""  .     
SMTP 25.
.

IDIALOG: 6
I-NNTPS &  NNTP
I-NNTPP &   NNTP
       
      
  Internet,    NNTP.


      NNTP   ,
 ""  .     
NNTP 119.
.

IDIALOG: 7
I-CONNECTION &
I-TEL &
 E-serv      
,      
  Internet.


   (  "   "),
  .     
( ),     .
.

IDIALOG: 8
I-PPP-LOGIN & 
I-PPP-PASS &
      
   .
.

IDIALOG: 9
I-TIME &  
I-TIMEOUT &   (  )
E-serv       
         .
  /   Web-, 
    ,    
.
    ,    
 :  .
.

IDIALOG: 10
I-LOCALPOP3P   &POP3
I-LOCALSMTPP   &SMTP
E-serv       
        
   POP3.     
E-serv    SMTP.


      
(  110  25).
.

IDIALOG: 11
I-LOCALNNTPP   &NNTP
I-LOCALHTTPP   &HTTP (Web)
E-serv       
     ,  
 NNTP.       E-serv
  Web-.    Internet 
    /  ,
/  ,  /   ..
.
IDIALOG: 12
I-SERVICE & 
I-1 & 
E-serv      Windows NT, 
        .


  ,     E-serv,   
 .
.
[THEN]
\ ---------------------------------------------------------------------
: SET ( addr -- )
  HERE SWAP ! 1 WORD ", 0 C,
;
: SET-BL ( addr -- )
  HERE SWAP ! BL WORD ", 0 C,
;
: DisableDial
  1 VDisDial !
;
: DisableSchedule
  1 VDisSch !
;
: SMTPport:
  I-LOCALSMTPP SET
;
: POP3port:
  I-LOCALPOP3P SET
;
: HTTPport:
  I-LOCALHTTPP SET
;
: NNTPport:
  I-LOCALNNTPP SET
;
: Domain:
  I-DOMAIN SET-BL I-ALIAS SET
;
: ServiceName:
  I-SERVICE SET
;
: PPPserver:
  I-CONNECTION SET
;
: SMTPserver:
  I-SMTPS SET-BL I-SMTPP SET
;
: POP3server:
  I-POP3S SET-BL I-POP3P SET
;
: NNTPserver:
  I-NNTPS SET-BL I-NNTPP SET
;
: POP3login:
  I-POP-USER SET-BL
  I-POP-PASS SET
;
: PPPlogin:
  I-PPP-LOGIN SET-BL
  I-PPP-PASS SET
;
: Phones:
  I-TEL SET
;
: Poll:
  I-TIME SET
;
: PollInterval:
  I-TIME SET
;
: Interval:
  I-TIME SET
;
: MaxSessionTime:
  I-TIMEOUT SET
;
VARIABLE Debug

\ ---------------------------------------------------------------------
ALSO Windows1 DEFINITIONS

C: IDCANCEL \   
    EndDialog ( true ) DROP
   BYE
;
C: Dlg1ButCancel
    EndDialog ( true ) DROP
   BYE
;
C: Dlg1ButNext
   NEXT-DLG
;
C: Dlg1ButBack
   DLG# @ 1 = IF  EndDialog DROP EXIT THEN
   PREV-DLG
;
C: Image
   S" Copyright (C) Etype Co. Andrey Cherezov" 
;
M: WM_COMMAND ( lparam wparam uint=msg hwnd -- TRUE )
   DUP TO 
   BASE @ >R HEX 2>R
   DUP 0 <# #S [CHAR] c HOLD #> ALSO Windows1 CONTEXT @ PREVIOUS
   SEARCH-WORDLIST
   IF >R 2DROP R> 2R> 2DROP R> BASE ! EXECUTE TRUE
   ELSE 2R> R> BASE ! FALSE THEN
;
M: WM_INITDIALOG ( lparam wparam uint=msg hwnd -- TRUE )
   TO  DROP 2DROP
   S" E-serv.ICO" LOAD-ICON16 -14  SetClassLongA DROP
   S" <Back"      Dlg1ButBack 
   S" Next>"      Dlg1ButNext 
   S" Cancel"     Dlg1ButCancel 
   S" E-serv.bmp" Toolbar
   S" E-SERV.INI" ['] INCLUDED CATCH
   IF S"       E-serv.ini,    !"  THEN
   NEXT-DLG
   TRUE
;
\ ---------------------------------------------------------------------
(
: DisableDial
  1 ButDisDial  CheckDlgButton DROP
;
: DisableSchedule
  1 ButDisSch  CheckDlgButton DROP
;
: SMTPport:
  BL WORD COUNT EditSMTPport 
;
: POP3port:
  BL WORD COUNT EditPOP3port 
;
: HTTPport:
  BL WORD COUNT EditHTTPport 
;
: NNTPport:
  BL WORD COUNT EditNNTPport 
;
: Domain:
  1 WORD COUNT EditDomain 
;
: ServiceName:
  1 WORD COUNT EditService 
;
: PPPserver:
  1 WORD COUNT 2DUP + 0! DROP -1 CB_SELECTSTRING Combo1  DROP
  POSTPONE \
;
: SMTPserver:
  BL WORD COUNT EditSMTPs 
  BL WORD COUNT EditSMTPp 
;
: POP3server:
  BL WORD COUNT EditPOP3s 
  BL WORD COUNT EditPOP3p 
;
: NNTPserver:
  BL WORD COUNT EditNNTPs 
  BL WORD COUNT EditNNTPp 
;
: POP3login:
  BL WORD COUNT EditPOP3login 
  BL WORD COUNT EditPOP3passw 
;
: PPPlogin:
  BL WORD COUNT EditPPPlogin 
  BL WORD COUNT EditPPPpassw 
;
: Phones:
  1 PARSE EditTel 
;
: Poll:
  1 PARSE EditInt 
;
: PollInterval:
  1 PARSE EditInt 
;
: Interval:
  POSTPONE \
;
: MaxSessionTime:
  1 PARSE EditLen 
;
)
\ ------------------------------------
: (DlgWndProc)     ( lparam wparam uint hwnd -- flag )
  \   
  DUP TO 
  S0 @ >R SP@ 4 CELLS + S0 !
  OVER DROP
  ALSO Windows CONTEXT @ PREVIOUS
   0

  IF 
     DROP 2DROP 2DROP 0
  ELSE IF 1 ELSE 2DROP 2DROP 0 THEN THEN
  R> S0 !
;
' (DlgWndProc) WNDPROC: DlgWndProc

: (Dlg1WndProc)     ( lparam wparam uint hwnd -- flag )
  \   
  DUP TO 
  S0 @ >R SP@ 4 CELLS + S0 !
  OVER DROP
  ALSO Windows1 CONTEXT @ PREVIOUS
   0

  IF 
     DROP 2DROP 2DROP 0
  ELSE IF 1 ELSE 2DROP 2DROP 0 THEN THEN
  R> S0 !
;
' (Dlg1WndProc) WNDPROC: Dlg1WndProc

\ HEX
\  HERE 7 + 8 / 8 * HERE - ALLOT  HERE DLG ! 700 ALLOT
\  S" E-SERV1.RES" R/O OPEN-FILE THROW DUP DUP
\  HERE 40 ROT READ-FILE 2DROP
\  DLG @ 700 ROT READ-FILE THROW DROP CLOSE-FILE THROW
\ DECIMAL

: T
  InitCommonControls DROP
\  BEGIN
\   S" $E-SERV$.TMP" DELETE-FILE 0=
\  UNTIL
  C/L CELL+ ALLOCATE IF BYE ELSE TO TIB THEN
  0 ['] Dlg1WndProc 0 DLG1 @ HINST DialogBoxIndirectParamA DROP
  0 ['] DlgWndProc 0 DLG @ HINST DialogBoxIndirectParamA DROP
  BYE
;
' NOOP TO ANSI><OEM
TRUE TO ?GUI FALSE TO ?CONSOLE ' T DUP MAINX ! TO <MAIN> S" ..\E-serv1\Setup-Eserv.exe" SAVE
