Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/tekwin.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3226 by maya, Tue Mar 24 09:37:20 2009 UTC revision 3227 by maya, Tue Mar 24 15:10:33 2009 UTC
# Line 1  Line 1 
1  /* Tera Term  /* Tera Term
2   Copyright(C) 1994-1998 T. Teranishi   Copyright(C) 1994-1998 T. Teranishi
3   All rights reserved. */   All rights reserved. */
4    
5  /* TERATERM.EXE, TEK window */  /* TERATERM.EXE, TEK window */
6  #include "stdafx.h"  #include "stdafx.h"
7  #include "teraterm.h"  #include "teraterm.h"
8  #include "tttypes.h"  #include "tttypes.h"
9  #include "tektypes.h"  #include "tektypes.h"
10  #include "teklib.h"  #include "teklib.h"
11  #include "ttwinman.h"  #include "ttwinman.h"
12  #include "ttcommon.h"  #include "ttcommon.h"
13  #include "keyboard.h"  #include "keyboard.h"
14  #include "clipboar.h"  #include "clipboar.h"
15  #include "ttdialog.h"  #include "ttdialog.h"
16  #include "teraprn.h"  #include "teraprn.h"
17  #include "helpid.h"  #include "helpid.h"
18  #include "tt_res.h"  #include "tt_res.h"
19  #include "tekwin.h"  #include "tekwin.h"
20  #include "ttlib.h"  #include "ttlib.h"
21    
22  #define TEKClassName "TEKWin32"  #define TEKClassName "TEKWin32"
23    
24  #ifdef _DEBUG  #ifdef _DEBUG
25  #define new DEBUG_NEW  #define new DEBUG_NEW
26  #undef THIS_FILE  #undef THIS_FILE
27  static char THIS_FILE[] = __FILE__;  static char THIS_FILE[] = __FILE__;
28  #endif  #endif
29    
30  /////////////////////////////////////////////////////////////////////////////  /////////////////////////////////////////////////////////////////////////////
31  // CTEKWindow  // CTEKWindow
32    
33  CTEKWindow::CTEKWindow()  CTEKWindow::CTEKWindow()
34  {  {
35    WNDCLASS wc;    WNDCLASS wc;
36    RECT rect;    RECT rect;
37    DWORD Style;    DWORD Style;
38    int fuLoad = LR_DEFAULTCOLOR;    int fuLoad = LR_DEFAULTCOLOR;
39    
40    if (! LoadTTTEK()) return;    if (! LoadTTTEK()) return;
41    TEKInit(&tk, &ts);    TEKInit(&tk, &ts);
42    
43    if (ts.HideTitle>0)    if (ts.HideTitle>0)
44      Style = WS_POPUP | WS_THICKFRAME | WS_BORDER;      Style = WS_POPUP | WS_THICKFRAME | WS_BORDER;
45    else    else
46      Style = WS_CAPTION | WS_SYSMENU |      Style = WS_CAPTION | WS_SYSMENU |
47              WS_MINIMIZEBOX | WS_BORDER | WS_THICKFRAME;              WS_MINIMIZEBOX | WS_BORDER | WS_THICKFRAME;
48    
49    wc.style = CS_HREDRAW | CS_VREDRAW;    wc.style = CS_HREDRAW | CS_VREDRAW;
50    wc.lpfnWndProc = AfxWndProc;    wc.lpfnWndProc = AfxWndProc;
51    wc.cbClsExtra = 0;    wc.cbClsExtra = 0;
52    wc.cbWndExtra = 0;    wc.cbWndExtra = 0;
53    wc.hInstance = AfxGetInstanceHandle();    wc.hInstance = AfxGetInstanceHandle();
54    wc.hIcon = NULL;    wc.hIcon = NULL;
55    wc.hCursor = LoadCursor(NULL,IDC_ARROW);    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
56    wc.hbrBackground = NULL;    wc.hbrBackground = NULL;
57    wc.lpszMenuName = NULL;    wc.lpszMenuName = NULL;
58    wc.lpszClassName = TEKClassName;    wc.lpszClassName = TEKClassName;
59    
60    RegisterClass(&wc);    RegisterClass(&wc);
61    
62    if (ts.TEKPos.x==CW_USEDEFAULT)    if (ts.TEKPos.x==CW_USEDEFAULT)
63      rect = rectDefault;      rect = rectDefault;
64    else {    else {
65      rect.left = ts.TEKPos.x;      rect.left = ts.TEKPos.x;
66      rect.top = ts.TEKPos.y;      rect.top = ts.TEKPos.y;
67      rect.right = rect.left + 640; //temporary width      rect.right = rect.left + 640; //temporary width
68      rect.bottom = rect.top + 400; //temporary height      rect.bottom = rect.top + 400; //temporary height
69    }    }
70    Create(TEKClassName, "Tera Term", Style, rect, GetDesktopWindow(), NULL);    Create(TEKClassName, "Tera Term", Style, rect, GetDesktopWindow(), NULL);
71  //--------------------------------------------------------  //--------------------------------------------------------
72    HTEKWin = GetSafeHwnd();    HTEKWin = GetSafeHwnd();
73    if (HTEKWin == NULL) return;    if (HTEKWin == NULL) return;
74    tk.HWin = HTEKWin;    tk.HWin = HTEKWin;
75    // register this window to the window list    // register this window to the window list
76    RegWin(HVTWin,HTEKWin);    RegWin(HVTWin,HTEKWin);
77    
78      if (is_NT4()) {      if (is_NT4()) {
79      fuLoad = LR_VGACOLOR;      fuLoad = LR_VGACOLOR;
80    }    }
81    ::PostMessage(HTEKWin,WM_SETICON,ICON_SMALL,    ::PostMessage(HTEKWin,WM_SETICON,ICON_SMALL,
82                  (LPARAM)LoadImage(AfxGetInstanceHandle(),                  (LPARAM)LoadImage(AfxGetInstanceHandle(),
83                                    MAKEINTRESOURCE((ts.TEKIcon!=IdIconDefault)?ts.TEKIcon:IDI_TEK),                                    MAKEINTRESOURCE((ts.TEKIcon!=IdIconDefault)?ts.TEKIcon:IDI_TEK),
84                                    IMAGE_ICON,16,16,fuLoad));                                    IMAGE_ICON,16,16,fuLoad));
85    ::PostMessage(HTEKWin,WM_SETICON,ICON_BIG,    ::PostMessage(HTEKWin,WM_SETICON,ICON_BIG,
86                  (LPARAM)LoadImage(AfxGetInstanceHandle(),                  (LPARAM)LoadImage(AfxGetInstanceHandle(),
87                                    MAKEINTRESOURCE((ts.TEKIcon!=IdIconDefault)?ts.TEKIcon:IDI_TEK),                                    MAKEINTRESOURCE((ts.TEKIcon!=IdIconDefault)?ts.TEKIcon:IDI_TEK),
88                                    IMAGE_ICON, 0, 0, fuLoad));                                    IMAGE_ICON, 0, 0, fuLoad));
89    
90    MainMenu = NULL;    MainMenu = NULL;
91    WinMenu = NULL;    WinMenu = NULL;
92    if ((ts.HideTitle==0) && (ts.PopupMenu==0))    if ((ts.HideTitle==0) && (ts.PopupMenu==0))
93    {    {
94      InitMenu(&MainMenu);      InitMenu(&MainMenu);
95      ::SetMenu(HTEKWin,MainMenu);      ::SetMenu(HTEKWin,MainMenu);
96    }    }
97    
98    ChangeTitle();    ChangeTitle();
99    
100    ::GetWindowRect(tk.HWin,&rect);    ::GetWindowRect(tk.HWin,&rect);
101    TEKResizeWindow(&tk,&ts,    TEKResizeWindow(&tk,&ts,
102       rect.right-rect.left, rect.bottom-rect.top);       rect.right-rect.left, rect.bottom-rect.top);
103    
104    if ((ts.PopupMenu>0) || (ts.HideTitle>0))    if ((ts.PopupMenu>0) || (ts.HideTitle>0))
105      ::PostMessage(HTEKWin,WM_USER_CHANGEMENU,0,0);      ::PostMessage(HTEKWin,WM_USER_CHANGEMENU,0,0);
106    
107    ::ShowWindow(tk.HWin, SW_SHOWNORMAL);    ::ShowWindow(tk.HWin, SW_SHOWNORMAL);
108  }  }
109    
110  int CTEKWindow::Parse()  int CTEKWindow::Parse()
111  {  {
112    return (TEKParse(&tk,&ts,&cv));    return (TEKParse(&tk,&ts,&cv));
113  }  }
114    
115  void CTEKWindow::RestoreSetup()  void CTEKWindow::RestoreSetup()
116  {  {
117    TEKRestoreSetup(&tk,&ts);    TEKRestoreSetup(&tk,&ts);
118    ChangeTitle();    ChangeTitle();
119  }  }
120    
121  void CTEKWindow::InitMenu(HMENU *Menu)  void CTEKWindow::InitMenu(HMENU *Menu)
122  {  {
123    *Menu = ::LoadMenu(AfxGetInstanceHandle(),    *Menu = ::LoadMenu(AfxGetInstanceHandle(),
124                                           MAKEINTRESOURCE(IDR_TEKMENU));                                           MAKEINTRESOURCE(IDR_TEKMENU));
125    EditMenu = GetSubMenu(MainMenu,1);    EditMenu = GetSubMenu(MainMenu,1);
126    FileMenu = GetSubMenu(MainMenu,0);    FileMenu = GetSubMenu(MainMenu,0);
127    SetupMenu = GetSubMenu(MainMenu,2);    SetupMenu = GetSubMenu(MainMenu,2);
128    HelpMenu = GetSubMenu(MainMenu,4);    HelpMenu = GetSubMenu(MainMenu,4);
129    char uimsg[MAX_UIMSG];    char uimsg[MAX_UIMSG];
130    
131    GetMenuString(*Menu, 0, uimsg, sizeof(uimsg), MF_BYPOSITION);    GetMenuString(*Menu, 0, uimsg, sizeof(uimsg), MF_BYPOSITION);
132    get_lang_msg("TEKMENU_FILE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_FILE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
133    ModifyMenu(*Menu, 0, MF_BYPOSITION, 0, ts.UIMsg);    ModifyMenu(*Menu, 0, MF_BYPOSITION, 0, ts.UIMsg);
134    GetMenuString(FileMenu, ID_TEKFILE_PRINT, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(FileMenu, ID_TEKFILE_PRINT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
135    get_lang_msg("TEKMENU_FILE_PRINT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_FILE_PRINT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
136    ModifyMenu(FileMenu, ID_TEKFILE_PRINT, MF_BYCOMMAND, ID_TEKFILE_PRINT, ts.UIMsg);    ModifyMenu(FileMenu, ID_TEKFILE_PRINT, MF_BYCOMMAND, ID_TEKFILE_PRINT, ts.UIMsg);
137    GetMenuString(FileMenu, ID_TEKFILE_EXIT, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(FileMenu, ID_TEKFILE_EXIT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
138    get_lang_msg("TEKMENU_FILE_EXIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_FILE_EXIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
139    ModifyMenu(FileMenu, ID_TEKFILE_EXIT, MF_BYCOMMAND, ID_TEKFILE_EXIT, ts.UIMsg);    ModifyMenu(FileMenu, ID_TEKFILE_EXIT, MF_BYCOMMAND, ID_TEKFILE_EXIT, ts.UIMsg);
140    
141    GetMenuString(*Menu, 1, uimsg, sizeof(uimsg), MF_BYPOSITION);    GetMenuString(*Menu, 1, uimsg, sizeof(uimsg), MF_BYPOSITION);
142    get_lang_msg("TEKMENU_EDIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
143    ModifyMenu(*Menu, 1, MF_BYPOSITION, 1, ts.UIMsg);    ModifyMenu(*Menu, 1, MF_BYPOSITION, 1, ts.UIMsg);
144    GetMenuString(EditMenu, ID_TEKEDIT_COPY, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(EditMenu, ID_TEKEDIT_COPY, uimsg, sizeof(uimsg), MF_BYCOMMAND);
145    get_lang_msg("TEKMENU_EDIT_COPY", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT_COPY", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
146    ModifyMenu(EditMenu, ID_TEKEDIT_COPY, MF_BYCOMMAND, ID_TEKEDIT_COPY, ts.UIMsg);    ModifyMenu(EditMenu, ID_TEKEDIT_COPY, MF_BYCOMMAND, ID_TEKEDIT_COPY, ts.UIMsg);
147    GetMenuString(EditMenu, ID_TEKEDIT_COPYSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(EditMenu, ID_TEKEDIT_COPYSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
148    get_lang_msg("TEKMENU_EDIT_COPYSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT_COPYSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
149    ModifyMenu(EditMenu, ID_TEKEDIT_COPYSCREEN, MF_BYCOMMAND, ID_TEKEDIT_COPYSCREEN, ts.UIMsg);    ModifyMenu(EditMenu, ID_TEKEDIT_COPYSCREEN, MF_BYCOMMAND, ID_TEKEDIT_COPYSCREEN, ts.UIMsg);
150    GetMenuString(EditMenu, ID_TEKEDIT_PASTE, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(EditMenu, ID_TEKEDIT_PASTE, uimsg, sizeof(uimsg), MF_BYCOMMAND);
151    get_lang_msg("TEKMENU_EDIT_PASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT_PASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
152    ModifyMenu(EditMenu, ID_TEKEDIT_PASTE, MF_BYCOMMAND, ID_TEKEDIT_PASTE, ts.UIMsg);    ModifyMenu(EditMenu, ID_TEKEDIT_PASTE, MF_BYCOMMAND, ID_TEKEDIT_PASTE, ts.UIMsg);
153    GetMenuString(EditMenu, ID_TEKEDIT_PASTECR, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(EditMenu, ID_TEKEDIT_PASTECR, uimsg, sizeof(uimsg), MF_BYCOMMAND);
154    get_lang_msg("TEKMENU_EDIT_PASTECR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT_PASTECR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
155    ModifyMenu(EditMenu, ID_TEKEDIT_PASTECR, MF_BYCOMMAND, ID_TEKEDIT_PASTECR, ts.UIMsg);    ModifyMenu(EditMenu, ID_TEKEDIT_PASTECR, MF_BYCOMMAND, ID_TEKEDIT_PASTECR, ts.UIMsg);
156    GetMenuString(EditMenu, ID_TEKEDIT_CLEARSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(EditMenu, ID_TEKEDIT_CLEARSCREEN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
157    get_lang_msg("TEKMENU_EDIT_CLSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_EDIT_CLSCREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
158    ModifyMenu(EditMenu, ID_TEKEDIT_CLEARSCREEN, MF_BYCOMMAND, ID_TEKEDIT_CLEARSCREEN, ts.UIMsg);    ModifyMenu(EditMenu, ID_TEKEDIT_CLEARSCREEN, MF_BYCOMMAND, ID_TEKEDIT_CLEARSCREEN, ts.UIMsg);
159    
160    GetMenuString(*Menu, 2, uimsg, sizeof(uimsg), MF_BYPOSITION);    GetMenuString(*Menu, 2, uimsg, sizeof(uimsg), MF_BYPOSITION);
161    get_lang_msg("TEKMENU_SETUP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_SETUP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
162    ModifyMenu(*Menu, 2, MF_BYPOSITION, 2, ts.UIMsg);    ModifyMenu(*Menu, 2, MF_BYPOSITION, 2, ts.UIMsg);
163    GetMenuString(SetupMenu, ID_TEKSETUP_WINDOW, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(SetupMenu, ID_TEKSETUP_WINDOW, uimsg, sizeof(uimsg), MF_BYCOMMAND);
164    get_lang_msg("TEKMENU_SETUP_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_SETUP_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
165    ModifyMenu(SetupMenu, ID_TEKSETUP_WINDOW, MF_BYCOMMAND, ID_TEKSETUP_WINDOW, ts.UIMsg);    ModifyMenu(SetupMenu, ID_TEKSETUP_WINDOW, MF_BYCOMMAND, ID_TEKSETUP_WINDOW, ts.UIMsg);
166    GetMenuString(SetupMenu, ID_TEKSETUP_FONT, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(SetupMenu, ID_TEKSETUP_FONT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
167    get_lang_msg("TEKMENU_SETUP_FONT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_SETUP_FONT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
168    ModifyMenu(SetupMenu, ID_TEKSETUP_FONT, MF_BYCOMMAND, ID_TEKSETUP_FONT, ts.UIMsg);    ModifyMenu(SetupMenu, ID_TEKSETUP_FONT, MF_BYCOMMAND, ID_TEKSETUP_FONT, ts.UIMsg);
169    
170    GetMenuString(*Menu, ID_TEKVTWIN, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(*Menu, ID_TEKVTWIN, uimsg, sizeof(uimsg), MF_BYCOMMAND);
171    get_lang_msg("TEKMENU_VTWIN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_VTWIN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
172    ModifyMenu(*Menu, ID_TEKVTWIN, MF_BYCOMMAND, ID_TEKVTWIN, ts.UIMsg);    ModifyMenu(*Menu, ID_TEKVTWIN, MF_BYCOMMAND, ID_TEKVTWIN, ts.UIMsg);
173    
174    GetMenuString(*Menu, 4, uimsg, sizeof(uimsg), MF_BYPOSITION);    GetMenuString(*Menu, 4, uimsg, sizeof(uimsg), MF_BYPOSITION);
175    get_lang_msg("TEKMENU_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
176    ModifyMenu(*Menu, 4, MF_BYPOSITION, 4, ts.UIMsg);    ModifyMenu(*Menu, 4, MF_BYPOSITION, 4, ts.UIMsg);
177    GetMenuString(HelpMenu, ID_TEKHELP_INDEX, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(HelpMenu, ID_TEKHELP_INDEX, uimsg, sizeof(uimsg), MF_BYCOMMAND);
178    get_lang_msg("TEKMENU_HELP_INDEX", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_HELP_INDEX", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
179    ModifyMenu(HelpMenu, ID_TEKHELP_INDEX, MF_BYCOMMAND, ID_TEKHELP_INDEX, ts.UIMsg);    ModifyMenu(HelpMenu, ID_TEKHELP_INDEX, MF_BYCOMMAND, ID_TEKHELP_INDEX, ts.UIMsg);
180    GetMenuString(HelpMenu, ID_TEKHELP_ABOUT, uimsg, sizeof(uimsg), MF_BYCOMMAND);    GetMenuString(HelpMenu, ID_TEKHELP_ABOUT, uimsg, sizeof(uimsg), MF_BYCOMMAND);
181    get_lang_msg("TEKMENU_HELP_ABOUT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);    get_lang_msg("TEKMENU_HELP_ABOUT", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
182    ModifyMenu(HelpMenu, ID_TEKHELP_ABOUT, MF_BYCOMMAND, ID_TEKHELP_ABOUT, ts.UIMsg);    ModifyMenu(HelpMenu, ID_TEKHELP_ABOUT, MF_BYCOMMAND, ID_TEKHELP_ABOUT, ts.UIMsg);
183    
184    if ((ts.MenuFlag & MF_SHOWWINMENU) !=0)    if ((ts.MenuFlag & MF_SHOWWINMENU) !=0)
185    {    {
186      WinMenu = CreatePopupMenu();      WinMenu = CreatePopupMenu();
187      get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);      get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);
188      ::InsertMenu(*Menu,4,      ::InsertMenu(*Menu,4,
189                   MF_STRING | MF_ENABLED |                   MF_STRING | MF_ENABLED |
190                   MF_POPUP | MF_BYPOSITION,                   MF_POPUP | MF_BYPOSITION,
191                   (int)WinMenu, ts.UIMsg);                   (int)WinMenu, ts.UIMsg);
192    }    }
193  }  }
194    
195  void CTEKWindow::InitMenuPopup(HMENU SubMenu)  void CTEKWindow::InitMenuPopup(HMENU SubMenu)
196  {  {
197    if (SubMenu==EditMenu)    if (SubMenu==EditMenu)
198    {    {
199      if (tk.Select)      if (tk.Select)
200        EnableMenuItem(EditMenu,ID_TEKEDIT_COPY,MF_BYCOMMAND | MF_ENABLED);        EnableMenuItem(EditMenu,ID_TEKEDIT_COPY,MF_BYCOMMAND | MF_ENABLED);
201      else      else
202        EnableMenuItem(EditMenu,ID_TEKEDIT_COPY,MF_BYCOMMAND | MF_GRAYED);        EnableMenuItem(EditMenu,ID_TEKEDIT_COPY,MF_BYCOMMAND | MF_GRAYED);
203    
204      if (cv.Ready &&      if (cv.Ready &&
205          (IsClipboardFormatAvailable(CF_TEXT) ||          (IsClipboardFormatAvailable(CF_TEXT) ||
206           IsClipboardFormatAvailable(CF_OEMTEXT)))           IsClipboardFormatAvailable(CF_OEMTEXT)))
207      {      {
208        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTE,MF_BYCOMMAND | MF_ENABLED);        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTE,MF_BYCOMMAND | MF_ENABLED);
209        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTECR,MF_BYCOMMAND | MF_ENABLED);        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTECR,MF_BYCOMMAND | MF_ENABLED);
210      }      }
211      else {      else {
212        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTE,MF_BYCOMMAND | MF_GRAYED);        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTE,MF_BYCOMMAND | MF_GRAYED);
213        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTECR,MF_BYCOMMAND | MF_GRAYED);        EnableMenuItem(EditMenu,ID_TEKEDIT_PASTECR,MF_BYCOMMAND | MF_GRAYED);
214      }      }
215    }    }
216    else if ( SubMenu == WinMenu )    else if ( SubMenu == WinMenu )
217    {    {
218      SetWinMenu(WinMenu, ts.UIMsg, sizeof(ts.UIMsg), ts.UILanguageFile, 0);      SetWinMenu(WinMenu, ts.UIMsg, sizeof(ts.UIMsg), ts.UILanguageFile, 0);
219    }    }
220  }  }
221    
222  BEGIN_MESSAGE_MAP(CTEKWindow, CFrameWnd)  BEGIN_MESSAGE_MAP(CTEKWindow, CFrameWnd)
223          //{{AFX_MSG_MAP(CTEKWindow)          //{{AFX_MSG_MAP(CTEKWindow)
224          ON_WM_ACTIVATE()          ON_WM_ACTIVATE()
225          ON_WM_CHAR()          ON_WM_CHAR()
226          ON_WM_DESTROY()          ON_WM_DESTROY()
227          ON_WM_GETMINMAXINFO()          ON_WM_GETMINMAXINFO()
228          ON_WM_INITMENUPOPUP()          ON_WM_INITMENUPOPUP()
229          ON_WM_KEYDOWN()          ON_WM_KEYDOWN()
230          ON_WM_KEYUP()          ON_WM_KEYUP()
231          ON_WM_KILLFOCUS()          ON_WM_KILLFOCUS()
232          ON_WM_LBUTTONDOWN()          ON_WM_LBUTTONDOWN()
233          ON_WM_LBUTTONUP()          ON_WM_LBUTTONUP()
234          ON_WM_MBUTTONUP()          ON_WM_MBUTTONUP()
235          ON_WM_MOUSEACTIVATE()          ON_WM_MOUSEACTIVATE()
236          ON_WM_MOUSEMOVE()          ON_WM_MOUSEMOVE()
237          ON_WM_MOVE()          ON_WM_MOVE()
238          ON_WM_PAINT()          ON_WM_PAINT()
239          ON_WM_RBUTTONUP()          ON_WM_RBUTTONUP()
240          ON_WM_SETFOCUS()          ON_WM_SETFOCUS()
241          ON_WM_SIZE()          ON_WM_SIZE()
242          ON_WM_SYSCOMMAND()          ON_WM_SYSCOMMAND()
243          ON_WM_SYSKEYDOWN()          ON_WM_SYSKEYDOWN()
244          ON_WM_SYSKEYUP()          ON_WM_SYSKEYUP()
245          ON_WM_TIMER()          ON_WM_TIMER()
246          ON_MESSAGE(WM_USER_ACCELCOMMAND, OnAccelCommand)          ON_MESSAGE(WM_USER_ACCELCOMMAND, OnAccelCommand)
247          ON_MESSAGE(WM_USER_CHANGEMENU,OnChangeMenu)          ON_MESSAGE(WM_USER_CHANGEMENU,OnChangeMenu)
248          ON_MESSAGE(WM_USER_CHANGETBAR,OnChangeTBar)          ON_MESSAGE(WM_USER_CHANGETBAR,OnChangeTBar)
249          ON_MESSAGE(WM_USER_DLGHELP2,OnDlgHelp)          ON_MESSAGE(WM_USER_DLGHELP2,OnDlgHelp)
250          ON_MESSAGE(WM_USER_GETSERIALNO,OnGetSerialNo)          ON_MESSAGE(WM_USER_GETSERIALNO,OnGetSerialNo)
251          ON_COMMAND(ID_TEKFILE_PRINT, OnFilePrint)          ON_COMMAND(ID_TEKFILE_PRINT, OnFilePrint)
252          ON_COMMAND(ID_TEKFILE_EXIT, OnFileExit)          ON_COMMAND(ID_TEKFILE_EXIT, OnFileExit)
253          ON_COMMAND(ID_TEKEDIT_COPY, OnEditCopy)          ON_COMMAND(ID_TEKEDIT_COPY, OnEditCopy)
254          ON_COMMAND(ID_TEKEDIT_COPYSCREEN, OnEditCopyScreen)          ON_COMMAND(ID_TEKEDIT_COPYSCREEN, OnEditCopyScreen)
255          ON_COMMAND(ID_TEKEDIT_PASTE, OnEditPaste)          ON_COMMAND(ID_TEKEDIT_PASTE, OnEditPaste)
256          ON_COMMAND(ID_TEKEDIT_PASTECR, OnEditPasteCR)          ON_COMMAND(ID_TEKEDIT_PASTECR, OnEditPasteCR)
257          ON_COMMAND(ID_TEKEDIT_CLEARSCREEN, OnEditClearScreen)          ON_COMMAND(ID_TEKEDIT_CLEARSCREEN, OnEditClearScreen)
258          ON_COMMAND(ID_TEKSETUP_WINDOW, OnSetupWindow)          ON_COMMAND(ID_TEKSETUP_WINDOW, OnSetupWindow)
259          ON_COMMAND(ID_TEKSETUP_FONT, OnSetupFont)          ON_COMMAND(ID_TEKSETUP_FONT, OnSetupFont)
260          ON_COMMAND(ID_TEKVTWIN, OnVTWin)          ON_COMMAND(ID_TEKVTWIN, OnVTWin)
261          ON_COMMAND(ID_TEKWINDOW_WINDOW, OnWindowWindow)          ON_COMMAND(ID_TEKWINDOW_WINDOW, OnWindowWindow)
262          ON_COMMAND(ID_TEKHELP_INDEX, OnHelpIndex)          ON_COMMAND(ID_TEKHELP_INDEX, OnHelpIndex)
263          ON_COMMAND(ID_TEKHELP_ABOUT, OnHelpAbout)          ON_COMMAND(ID_TEKHELP_ABOUT, OnHelpAbout)
264          ON_WM_TIMER()          ON_WM_TIMER()
265          //}}AFX_MSG_MAP          //}}AFX_MSG_MAP
266  END_MESSAGE_MAP()  END_MESSAGE_MAP()
267    
268  /////////////////////////////////////////////////////////////////////////////  /////////////////////////////////////////////////////////////////////////////
269  // CTEKWindow message handler  // CTEKWindow message handler
270    
271  LRESULT CTEKWindow::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)  LRESULT CTEKWindow::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
272  {  {
273    LRESULT Result;    LRESULT Result;
274    
275    if (message == MsgDlgHelp)    if (message == MsgDlgHelp)
276    {    {
277      OnDlgHelp(wParam,lParam);      OnDlgHelp(wParam,lParam);
278      return 0;      return 0;
279    }    }
280    else if ((ts.HideTitle>0) &&    else if ((ts.HideTitle>0) &&
281             (message == WM_NCHITTEST))             (message == WM_NCHITTEST))
282    {    {
283      Result = CFrameWnd::DefWindowProc(message,wParam,lParam);      Result = CFrameWnd::DefWindowProc(message,wParam,lParam);
284      if ((Result==HTCLIENT) && AltKey())      if ((Result==HTCLIENT) && AltKey())
285        Result = HTCAPTION;        Result = HTCAPTION;
286      return Result;      return Result;
287    }    }
288    
289    return (CFrameWnd::DefWindowProc(message,wParam,lParam));    return (CFrameWnd::DefWindowProc(message,wParam,lParam));
290  }  }
291    
292  BOOL CTEKWindow::OnCommand(WPARAM wParam, LPARAM lParam)  BOOL CTEKWindow::OnCommand(WPARAM wParam, LPARAM lParam)
293  {  {
294    if ((LOWORD(wParam)>=ID_WINDOW_1) && (LOWORD(wParam)<ID_WINDOW_1+9))    if ((LOWORD(wParam)>=ID_WINDOW_1) && (LOWORD(wParam)<ID_WINDOW_1+9))
295    {    {
296      SelectWin(LOWORD(wParam)-ID_WINDOW_1);      SelectWin(LOWORD(wParam)-ID_WINDOW_1);
297      return TRUE;      return TRUE;
298    }    }
299    else    else
300      return CFrameWnd::OnCommand(wParam, lParam);      return CFrameWnd::OnCommand(wParam, lParam);
301  }  }
302    
303  void CTEKWindow::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)  void CTEKWindow::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
304  {  {
305    if (nState!=WA_INACTIVE)    if (nState!=WA_INACTIVE)
306    {    {
307      tk.Active = TRUE;      tk.Active = TRUE;
308      ActiveWin = IdTEK;      ActiveWin = IdTEK;
309    }    }
310    else {    else {
311      tk.Active = FALSE;      tk.Active = FALSE;
312    }    }
313  }  }
314    
315  void CTEKWindow::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)  void CTEKWindow::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
316  {  {
317    unsigned int i;    unsigned int i;
318    char Code;    char Code;
319    
320    if (!KeybEnabled || (TalkStatus!=IdTalkKeyb)) return;    if (!KeybEnabled || (TalkStatus!=IdTalkKeyb)) return;
321    Code = nChar;    Code = nChar;
322    
323    if (tk.GIN) TEKReportGIN(&tk,&ts,&cv,Code);    if (tk.GIN) TEKReportGIN(&tk,&ts,&cv,Code);
324    else    else
325      for (i=1 ; i<=nRepCnt ; i++)      for (i=1 ; i<=nRepCnt ; i++)
326      {      {
327        CommTextOut(&cv,&Code,1);        CommTextOut(&cv,&Code,1);
328        if (ts.LocalEcho>0)        if (ts.LocalEcho>0)
329          CommTextEcho(&cv,&Code,1);          CommTextEcho(&cv,&Code,1);
330      }      }
331  }  }
332    
333  void CTEKWindow::OnDestroy()  void CTEKWindow::OnDestroy()
334  {  {
335    // remove this window from the window list    // remove this window from the window list
336    UnregWin(HTEKWin);    UnregWin(HTEKWin);
337    
338    CFrameWnd::OnDestroy();    CFrameWnd::OnDestroy();
339    
340    TEKEnd(&tk);    TEKEnd(&tk);
341    FreeTTTEK();    FreeTTTEK();
342    HTEKWin = NULL;    HTEKWin = NULL;
343    pTEKWin = NULL;    pTEKWin = NULL;
344    ActiveWin = IdVT;    ActiveWin = IdVT;
345  }  }
346    
347  void CTEKWindow::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)  void CTEKWindow::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
348  {  {
349    lpMMI->ptMaxSize.x = 10000;    lpMMI->ptMaxSize.x = 10000;
350    lpMMI->ptMaxSize.y = 10000;    lpMMI->ptMaxSize.y = 10000;
351    lpMMI->ptMaxTrackSize.x = 10000;    lpMMI->ptMaxTrackSize.x = 10000;
352    lpMMI->ptMaxTrackSize.y = 10000;    lpMMI->ptMaxTrackSize.y = 10000;
353  }  }
354    
355  void CTEKWindow::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)  void CTEKWindow::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
356  {  {
357    InitMenuPopup(pPopupMenu->m_hMenu);    InitMenuPopup(pPopupMenu->m_hMenu);
358  }  }
359    
360  void CTEKWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  void CTEKWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
361  {  {
362    KeyDown(HTEKWin,nChar,nRepCnt,nFlags & 0x1ff);    KeyDown(HTEKWin,nChar,nRepCnt,nFlags & 0x1ff);
363  }  }
364    
365  void CTEKWindow::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)  void CTEKWindow::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
366  {  {
367    KeyUp(nChar);    KeyUp(nChar);
368  }  }
369    
370  void CTEKWindow::OnKillFocus(CWnd* pNewWnd)  void CTEKWindow::OnKillFocus(CWnd* pNewWnd)
371  {  {
372    TEKDestroyCaret(&tk,&ts);    TEKDestroyCaret(&tk,&ts);
373    CFrameWnd::OnKillFocus(pNewWnd);    CFrameWnd::OnKillFocus(pNewWnd);
374  }  }
375    
376  void CTEKWindow::OnLButtonDown(UINT nFlags, CPoint point)  void CTEKWindow::OnLButtonDown(UINT nFlags, CPoint point)
377  {  {
378    POINT p;    POINT p;
379    HMENU PopupMenu, PopupBase;    HMENU PopupMenu, PopupBase;
380    
381    p.x = point.x;    p.x = point.x;
382    p.y = point.y;    p.y = point.y;
383    
384    // popup menu    // popup menu
385    if (ControlKey() && (MainMenu==NULL))    if (ControlKey() && (MainMenu==NULL))
386    {    {
387      InitMenu(&PopupMenu);      InitMenu(&PopupMenu);
388      InitMenuPopup(EditMenu);      InitMenuPopup(EditMenu);
389      if (WinMenu!=NULL)      if (WinMenu!=NULL)
390        InitMenuPopup(WinMenu);        InitMenuPopup(WinMenu);
391      PopupBase = CreatePopupMenu();      PopupBase = CreatePopupMenu();
392      get_lang_msg("MENU_CONTROL", ts.UIMsg, sizeof(ts.UIMsg), "&File", ts.UILanguageFile);      get_lang_msg("MENU_CONTROL", ts.UIMsg, sizeof(ts.UIMsg), "&File", ts.UILanguageFile);
393      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,
394                 (UINT)GetSubMenu(PopupMenu,0), ts.UIMsg);                 (UINT)GetSubMenu(PopupMenu,0), ts.UIMsg);
395      get_lang_msg("TEKMENU_EDIT", ts.UIMsg, sizeof(ts.UIMsg), "&Edit", ts.UILanguageFile);      get_lang_msg("TEKMENU_EDIT", ts.UIMsg, sizeof(ts.UIMsg), "&Edit", ts.UILanguageFile);
396      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,
397                 (UINT)EditMenu, ts.UIMsg);                 (UINT)EditMenu, ts.UIMsg);
398      get_lang_msg("TEKMENU_SETUP", ts.UIMsg, sizeof(ts.UIMsg), "&Setup", ts.UILanguageFile);      get_lang_msg("TEKMENU_SETUP", ts.UIMsg, sizeof(ts.UIMsg), "&Setup", ts.UILanguageFile);
399      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,
400                 (UINT)GetSubMenu(PopupMenu,2), ts.UIMsg);                 (UINT)GetSubMenu(PopupMenu,2), ts.UIMsg);
401      get_lang_msg("TEKMENU_VTWIN", ts.UIMsg, sizeof(ts.UIMsg), "VT-Wind&ow", ts.UILanguageFile);      get_lang_msg("TEKMENU_VTWIN", ts.UIMsg, sizeof(ts.UIMsg), "VT-Wind&ow", ts.UILanguageFile);
402      AppendMenu(PopupBase, MF_STRING | MF_ENABLED,      AppendMenu(PopupBase, MF_STRING | MF_ENABLED,
403                 ID_TEKVTWIN, ts.UIMsg);                 ID_TEKVTWIN, ts.UIMsg);
404      if (WinMenu!=NULL) {      if (WinMenu!=NULL) {
405        get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);        get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);
406        AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,        AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,
407                   (UINT)WinMenu, ts.UIMsg);                   (UINT)WinMenu, ts.UIMsg);
408      }      }
409      get_lang_msg("TEKMENU_HELP", ts.UIMsg, sizeof(ts.UIMsg), "&Help", ts.UILanguageFile);      get_lang_msg("TEKMENU_HELP", ts.UIMsg, sizeof(ts.UIMsg), "&Help", ts.UILanguageFile);
410      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,      AppendMenu(PopupBase, MF_STRING | MF_ENABLED | MF_POPUP,
411                 (UINT)GetSubMenu(PopupMenu,4), ts.UIMsg);                 (UINT)GetSubMenu(PopupMenu,4), ts.UIMsg);
412      ::ClientToScreen(tk.HWin, &p);      ::ClientToScreen(tk.HWin, &p);
413      TrackPopupMenu(PopupBase,TPM_LEFTALIGN | TPM_LEFTBUTTON,      TrackPopupMenu(PopupBase,TPM_LEFTALIGN | TPM_LEFTBUTTON,
414                     p.x,p.y,0,tk.HWin,NULL);                     p.x,p.y,0,tk.HWin,NULL);
415      if (WinMenu!=NULL)      if (WinMenu!=NULL)
416      {      {
417        DestroyMenu(WinMenu);        DestroyMenu(WinMenu);
418        WinMenu = NULL;        WinMenu = NULL;
419      }      }
420      DestroyMenu(PopupBase);      DestroyMenu(PopupBase);
421      DestroyMenu(PopupMenu);      DestroyMenu(PopupMenu);
422      return;      return;
423    }    }
424    
425    TEKWMLButtonDown(&tk,&ts,&cv,p);    TEKWMLButtonDown(&tk,&ts,&cv,p);
426  }  }
427    
428  void CTEKWindow::OnLButtonUp(UINT nFlags, CPoint point)  void CTEKWindow::OnLButtonUp(UINT nFlags, CPoint point)
429  {  {
430    TEKWMLButtonUp(&tk,&ts);    TEKWMLButtonUp(&tk,&ts);
431  }  }
432    
433  void CTEKWindow::OnMButtonUp(UINT nFlags, CPoint point)  void CTEKWindow::OnMButtonUp(UINT nFlags, CPoint point)
434  {  {
435    //OnRButtonUp(nFlags,point);    //OnRButtonUp(nFlags,point);
436  }  }
437    
438  int CTEKWindow::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)  int CTEKWindow::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
439  {  {
440    if ((ts.SelOnActive==0) &&    if ((ts.SelOnActive==0) &&
441        (nHitTest==HTCLIENT))   //disable mouse event for text selection        (nHitTest==HTCLIENT))   //disable mouse event for text selection
442      return MA_ACTIVATEANDEAT; //     when window is activated      return MA_ACTIVATEANDEAT; //     when window is activated
443    else    else
444      return MA_ACTIVATE;      return MA_ACTIVATE;
445  }  }
446    
447  void CTEKWindow::OnMouseMove(UINT nFlags, CPoint point)  void CTEKWindow::OnMouseMove(UINT nFlags, CPoint point)
448  {  {
449    POINT p;    POINT p;
450    
451    p.x = point.x;    p.x = point.x;
452    p.y = point.y;    p.y = point.y;
453    TEKWMMouseMove(&tk,&ts,p);    TEKWMMouseMove(&tk,&ts,p);
454  }  }
455    
456  void CTEKWindow::OnMove(int x, int y)  void CTEKWindow::OnMove(int x, int y)
457  {  {
458    RECT R;    RECT R;
459    
460    ::GetWindowRect(HTEKWin,&R);    ::GetWindowRect(HTEKWin,&R);
461    ts.TEKPos.x = R.left;    ts.TEKPos.x = R.left;
462    ts.TEKPos.y = R.top;    ts.TEKPos.y = R.top;
463  }  }
464    
465  void CTEKWindow::OnPaint()  void CTEKWindow::OnPaint()
466  {  {
467    PAINTSTRUCT ps;    PAINTSTRUCT ps;
468    CDC *cdc;    CDC *cdc;
469    HDC PaintDC;    HDC PaintDC;
470    
471    cdc = BeginPaint(&ps);    cdc = BeginPaint(&ps);
472    PaintDC = cdc->GetSafeHdc();    PaintDC = cdc->GetSafeHdc();
473    
474    TEKPaint(&tk,&ts,PaintDC,&ps);    TEKPaint(&tk,&ts,PaintDC,&ps);
475    
476    EndPaint(&ps);    EndPaint(&ps);
477  }  }
478    
479  void CTEKWindow::OnRButtonUp(UINT nFlags, CPoint point)  void CTEKWindow::OnRButtonUp(UINT nFlags, CPoint point)
480  {  {
481    CBStartPaste(tk.HWin,FALSE,0,NULL,0);    CBStartPaste(tk.HWin,FALSE,0,NULL,0);
482  }  }
483    
484  void CTEKWindow::OnSetFocus(CWnd* pOldWnd)  void CTEKWindow::OnSetFocus(CWnd* pOldWnd)
485  {  {
486    TEKChangeCaret(&tk,&ts);    TEKChangeCaret(&tk,&ts);
487    CFrameWnd::OnSetFocus(pOldWnd);          CFrameWnd::OnSetFocus(pOldWnd);      
488  }  }
489    
490  void CTEKWindow::OnSize(UINT nType, int cx, int cy)  void CTEKWindow::OnSize(UINT nType, int cx, int cy)
491  {  {
492    int w, h;    int w, h;
493    RECT R;    RECT R;
494    
495    if (tk.Minimized && (nType==SIZE_RESTORED))    if (tk.Minimized && (nType==SIZE_RESTORED))
496    {    {
497      tk.Minimized = FALSE;      tk.Minimized = FALSE;
498      return;      return;
499    }    }
500    tk.Minimized = (nType==SIZE_MINIMIZED);    tk.Minimized = (nType==SIZE_MINIMIZED);
501    if (tk.Minimized) return;    if (tk.Minimized) return;
502    
503    ::GetWindowRect(tk.HWin,&R);    ::GetWindowRect(tk.HWin,&R);
504    w = R.right - R.left;    w = R.right - R.left;
505    h = R.bottom - R.top;    h = R.bottom - R.top;
506    
507    TEKWMSize(&tk,&ts,w,h,cx,cy);    TEKWMSize(&tk,&ts,w,h,cx,cy);
508  }  }
509    
510  void CTEKWindow::OnSysCommand(UINT nID, LPARAM lParam)  void CTEKWindow::OnSysCommand(UINT nID, LPARAM lParam)
511  {  {
512    if (nID==ID_SHOWMENUBAR)    if (nID==ID_SHOWMENUBAR)
513    {    {
514      ts.PopupMenu = 0;      ts.PopupMenu = 0;
515      SwitchMenu();      SwitchMenu();
516    }    }
517    else CFrameWnd::OnSysCommand(nID,lParam);    else CFrameWnd::OnSysCommand(nID,lParam);
518  }  }
519    
520  void CTEKWindow::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  void CTEKWindow::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
521  {  {
522    if (nChar==VK_F10)    if (nChar==VK_F10)
523      OnKeyDown(nChar,nRepCnt,nFlags);      OnKeyDown(nChar,nRepCnt,nFlags);
524    else    else
525      CFrameWnd::OnSysKeyDown(nChar,nRepCnt,nFlags);      CFrameWnd::OnSysKeyDown(nChar,nRepCnt,nFlags);
526  }  }
527    
528  void CTEKWindow::OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)  void CTEKWindow::OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
529  {  {
530    if (nChar==VK_F10)    if (nChar==VK_F10)
531      OnKeyUp(nChar,nRepCnt,nFlags);      OnKeyUp(nChar,nRepCnt,nFlags);
532    else    else
533      CFrameWnd::OnSysKeyUp(nChar,nRepCnt,nFlags);      CFrameWnd::OnSysKeyUp(nChar,nRepCnt,nFlags);
534  }  }
535    
536  void CTEKWindow::OnTimer(UINT nIDEvent)  void CTEKWindow::OnTimer(UINT nIDEvent)
537  {  {
538    UINT T;    UINT T;
539    
540    if (nIDEvent==IdCaretTimer)    if (nIDEvent==IdCaretTimer)
541    {    {
542      if (ts.NonblinkingCursor!=0)      if (ts.NonblinkingCursor!=0)
543      {      {
544        T = GetCaretBlinkTime();        T = GetCaretBlinkTime();
545        SetCaretBlinkTime(T);        SetCaretBlinkTime(T);
546      }      }
547      else      else
548        ::KillTimer(HTEKWin,IdCaretTimer);        ::KillTimer(HTEKWin,IdCaretTimer);
549      return;      return;
550    }    }
551    else    else
552      ::KillTimer(HTEKWin,nIDEvent);      ::KillTimer(HTEKWin,nIDEvent);
553  }  }
554    
555  LONG CTEKWindow::OnAccelCommand(UINT wParam, LONG lParam)  LONG CTEKWindow::OnAccelCommand(UINT wParam, LONG lParam)
556  {  {
557    switch (wParam) {    switch (wParam) {
558      case IdPrint:      case IdPrint:
559        OnFilePrint();        OnFilePrint();
560        break;        break;
561      case IdCmdEditCopy:      case IdCmdEditCopy:
562        OnEditCopy();        OnEditCopy();
563        break;        break;
564      case IdCmdEditPaste:      case IdCmdEditPaste:
565        OnEditPaste();        OnEditPaste();
566        break;        break;
567      case IdCmdEditPasteCR:      case IdCmdEditPasteCR:
568        OnEditPasteCR();        OnEditPasteCR();
569        break;        break;
570      case IdCmdEditCLS:      case IdCmdEditCLS:
571        OnEditClearScreen();        OnEditClearScreen();
572        break;        break;
573      case IdCmdCtrlCloseTEK:      case IdCmdCtrlCloseTEK:
574        OnFileExit();        OnFileExit();
575        break;        break;
576      case IdCmdNextWin:      case IdCmdNextWin:
577        SelectNextWin(HTEKWin,1);        SelectNextWin(HTEKWin,1);
578        break;        break;
579      case IdCmdPrevWin:      case IdCmdPrevWin:
580        SelectNextWin(HTEKWin,-1);        SelectNextWin(HTEKWin,-1);
581        break;        break;
582      case IdBreak:      case IdBreak:
583      case IdCmdRestoreSetup:      case IdCmdRestoreSetup:
584      case IdCmdLoadKeyMap:      case IdCmdLoadKeyMap:
585        ::PostMessage(HVTWin,WM_USER_ACCELCOMMAND,wParam,0);        ::PostMessage(HVTWin,WM_USER_ACCELCOMMAND,wParam,0);
586        break;        break;
587    }    }
588    return 0;    return 0;
589  }  }
590    
591  LONG CTEKWindow::OnChangeMenu(UINT wParam, LONG lParam)  LONG CTEKWindow::OnChangeMenu(UINT wParam, LONG lParam)
592  {  {
593    HMENU SysMenu;    HMENU SysMenu;
594    BOOL Show, B1, B2;    BOOL Show, B1, B2;
595    
596    Show = (ts.PopupMenu==0) && (ts.HideTitle==0);    Show = (ts.PopupMenu==0) && (ts.HideTitle==0);
597    if (Show != (MainMenu!=NULL))    if (Show != (MainMenu!=NULL))
598    {    {
599      if (! Show)      if (! Show)
600      {      {
601        if (WinMenu!=NULL)        if (WinMenu!=NULL)
602          DestroyMenu(WinMenu);          DestroyMenu(WinMenu);
603        WinMenu = NULL;        WinMenu = NULL;
604        DestroyMenu(MainMenu);        DestroyMenu(MainMenu);
605        MainMenu = NULL;        MainMenu = NULL;
606      }      }
607      else      else
608        InitMenu(&MainMenu);        InitMenu(&MainMenu);
609    
610      tk.AdjustSize = TRUE;      tk.AdjustSize = TRUE;
611      ::SetMenu(tk.HWin, MainMenu);      ::SetMenu(tk.HWin, MainMenu);
612      ::DrawMenuBar(HTEKWin);      ::DrawMenuBar(HTEKWin);
613    }    }
614    
615    B1 = ((ts.MenuFlag & MF_SHOWWINMENU)!=0);    B1 = ((ts.MenuFlag & MF_SHOWWINMENU)!=0);
616    B2 = (WinMenu!=NULL);    B2 = (WinMenu!=NULL);
617    if ((MainMenu!=NULL) &&    if ((MainMenu!=NULL) &&
618        (B1 != B2))        (B1 != B2))
619    {    {
620      if (WinMenu==NULL)      if (WinMenu==NULL)
621      {      {
622        WinMenu = CreatePopupMenu();        WinMenu = CreatePopupMenu();
623        get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);        get_lang_msg("TEKMENU_WINDOW", ts.UIMsg, sizeof(ts.UIMsg), "&Window", ts.UILanguageFile);
624        ::InsertMenu(MainMenu,4,        ::InsertMenu(MainMenu,4,
625                     MF_STRING | MF_ENABLED |                     MF_STRING | MF_ENABLED |
626                     MF_POPUP | MF_BYPOSITION,                     MF_POPUP | MF_BYPOSITION,
627                     (int)WinMenu, ts.UIMsg);                     (int)WinMenu, ts.UIMsg);
628      }      }
629      else {      else {
630        RemoveMenu(MainMenu,4,MF_BYPOSITION);        RemoveMenu(MainMenu,4,MF_BYPOSITION);
631        DestroyMenu(WinMenu);        DestroyMenu(WinMenu);
632        WinMenu = NULL;        WinMenu = NULL;
633      }      }
634      ::DrawMenuBar(HTEKWin);      ::DrawMenuBar(HTEKWin);
635    }    }
636    
637    ::GetSystemMenu(tk.HWin,TRUE);    ::GetSystemMenu(tk.HWin,TRUE);
638    if ((! Show) && ((ts.MenuFlag & MF_NOSHOWMENU)==0))    if ((! Show) && ((ts.MenuFlag & MF_NOSHOWMENU)==0))
639    {    {
640      SysMenu = ::GetSystemMenu(tk.HWin,FALSE);      SysMenu = ::GetSystemMenu(tk.HWin,FALSE);
641      AppendMenu(SysMenu, MF_SEPARATOR, 0, NULL);      AppendMenu(SysMenu, MF_SEPARATOR, 0, NULL);
642      get_lang_msg("TEKMENU_SHOW_MENUBAR", ts.UIMsg, sizeof(ts.UIMsg), "Show menu &bar", ts.UILanguageFile);      get_lang_msg("TEKMENU_SHOW_MENUBAR", ts.UIMsg, sizeof(ts.UIMsg), "Show menu &bar", ts.UILanguageFile);
643      AppendMenu(SysMenu, MF_STRING, ID_SHOWMENUBAR, ts.UIMsg);      AppendMenu(SysMenu, MF_STRING, ID_SHOWMENUBAR, ts.UIMsg);
644    }    }
645    return 0;    return 0;
646  }  }
647    
648  LONG CTEKWindow::OnChangeTBar(UINT wParam, LONG lParam)  LONG CTEKWindow::OnChangeTBar(UINT wParam, LONG lParam)
649  {  {
650    BOOL TBar;    BOOL TBar;
651    DWORD Style;    DWORD Style;
652    HMENU SysMenu;    HMENU SysMenu;
653    
654    Style = GetWindowLong (HTEKWin, GWL_STYLE);    Style = GetWindowLong (HTEKWin, GWL_STYLE);
655    TBar = ((Style & WS_SYSMENU)!=0);    TBar = ((Style & WS_SYSMENU)!=0);
656    if (TBar == (ts.HideTitle==0)) return 0;    if (TBar == (ts.HideTitle==0)) return 0;
657    if (ts.HideTitle>0)    if (ts.HideTitle>0)
658      Style = Style & ~(WS_SYSMENU | WS_CAPTION |      Style = Style & ~(WS_SYSMENU | WS_CAPTION |
659                        WS_MINIMIZEBOX) | WS_BORDER | WS_POPUP;                        WS_MINIMIZEBOX) | WS_BORDER | WS_POPUP;
660    else    else
661      Style = Style & ~WS_POPUP | WS_SYSMENU | WS_CAPTION |      Style = Style & ~WS_POPUP | WS_SYSMENU | WS_CAPTION |
662                       WS_MINIMIZEBOX;                       WS_MINIMIZEBOX;
663    tk.AdjustSize = TRUE;    tk.AdjustSize = TRUE;
664    SetWindowLong (HTEKWin, GWL_STYLE, Style);    SetWindowLong (HTEKWin, GWL_STYLE, Style);
665    ::SetWindowPos (HTEKWin, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE |    ::SetWindowPos (HTEKWin, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE |
666                    SWP_NOZORDER | SWP_FRAMECHANGED);                    SWP_NOZORDER | SWP_FRAMECHANGED);
667    ::ShowWindow (HTEKWin, SW_SHOW);    ::ShowWindow (HTEKWin, SW_SHOW);
668    
669    if ((ts.HideTitle==0) && (MainMenu==NULL) &&    if ((ts.HideTitle==0) && (MainMenu==NULL) &&
670        ((ts.MenuFlag & MF_NOSHOWMENU) == 0))        ((ts.MenuFlag & MF_NOSHOWMENU) == 0))
671    {    {
672      SysMenu = ::GetSystemMenu(HTEKWin,FALSE);      SysMenu = ::GetSystemMenu(HTEKWin,FALSE);
673      AppendMenu(SysMenu, MF_SEPARATOR, 0, NULL);      AppendMenu(SysMenu, MF_SEPARATOR, 0, NULL);
674      get_lang_msg("TEKMENU_SHOW_MENUBAR", ts.UIMsg, sizeof(ts.UIMsg), "Show menu &bar", ts.UILanguageFile);      get_lang_msg("TEKMENU_SHOW_MENUBAR", ts.UIMsg, sizeof(ts.UIMsg), "Show menu &bar", ts.UILanguageFile);
675      AppendMenu(SysMenu, MF_STRING, ID_SHOWMENUBAR, ts.UIMsg);      AppendMenu(SysMenu, MF_STRING, ID_SHOWMENUBAR, ts.UIMsg);
676    }    }
677    return 0;    return 0;
678  }  }
679    
680  LONG CTEKWindow::OnDlgHelp(UINT wParam, LONG lParam)  LONG CTEKWindow::OnDlgHelp(UINT wParam, LONG lParam)
681  {  {
682    OpenHelp(tk.HWin,HH_HELP_CONTEXT,HelpId);    OpenHelp(tk.HWin,HH_HELP_CONTEXT,HelpId);
683    return 0;    return 0;
684  }  }
685    
686  LONG CTEKWindow::OnGetSerialNo(UINT wParam, LONG lParam)  LONG CTEKWindow::OnGetSerialNo(UINT wParam, LONG lParam)
687  {  {
688    return (LONG)SerialNo;    return (LONG)SerialNo;
689  }  }
690    
691  void CTEKWindow::OnFilePrint()  void CTEKWindow::OnFilePrint()
692  {  {
693    BOOL Sel;    BOOL Sel;
694    HDC PrintDC;    HDC PrintDC;
695    
696    HelpId = HlpTEKFilePrint;    HelpId = HlpTEKFilePrint;
697    
698    Sel = tk.Select;    Sel = tk.Select;
699    PrintDC = PrnBox(tk.HWin,&Sel);    PrintDC = PrnBox(tk.HWin,&Sel);
700    if (PrintDC==NULL) return;    if (PrintDC==NULL) return;
701    if (! PrnStart(ts.Title)) return;    if (! PrnStart(ts.Title)) return;
702    
703    (*TEKPrint)(&tk,&ts,PrintDC,Sel);    (*TEKPrint)(&tk,&ts,PrintDC,Sel);
704    
705    PrnStop();    PrnStop();
706  }  }
707    
708  void CTEKWindow::OnFileExit()  void CTEKWindow::OnFileExit()
709  {  {
710    DestroyWindow();    DestroyWindow();
711  }  }
712    
713  void CTEKWindow::OnEditCopy()  void CTEKWindow::OnEditCopy()
714  {  {
715    (*TEKCMCopy)(&tk,&ts);    (*TEKCMCopy)(&tk,&ts);
716  }  }
717    
718  void CTEKWindow::OnEditCopyScreen()  void CTEKWindow::OnEditCopyScreen()
719  {  {
720    (*TEKCMCopyScreen)(&tk,&ts);    (*TEKCMCopyScreen)(&tk,&ts);
721  }  }
722    
723  void CTEKWindow::OnEditPaste()  void CTEKWindow::OnEditPaste()
724  {  {
725    CBStartPaste(tk.HWin,FALSE,0,NULL,0);    CBStartPaste(tk.HWin,FALSE,0,NULL,0);
726  }  }
727    
728  void CTEKWindow::OnEditPasteCR()  void CTEKWindow::OnEditPasteCR()
729  {  {
730    CBStartPaste(tk.HWin,TRUE,0,NULL,0);    CBStartPaste(tk.HWin,TRUE,0,NULL,0);
731  }  }
732    
733  void CTEKWindow::OnEditClearScreen()  void CTEKWindow::OnEditClearScreen()
734  {  {
735    (*TEKClearScreen)(&tk,&ts);    (*TEKClearScreen)(&tk,&ts);
736  }  }
737    
738  void CTEKWindow::OnSetupWindow()  void CTEKWindow::OnSetupWindow()
739  {  {
740    BOOL Ok;    BOOL Ok;
741    WORD OldEmu;    WORD OldEmu;
742    
743    HelpId = HlpTEKSetupWindow;    HelpId = HlpTEKSetupWindow;
744    ts.VTFlag = 0;    ts.VTFlag = 0;
745    ts.SampleFont = tk.TEKFont[0];    ts.SampleFont = tk.TEKFont[0];
746    
747    if (! LoadTTDLG()) return;    if (! LoadTTDLG()) return;
748    OldEmu = ts.TEKColorEmu;    OldEmu = ts.TEKColorEmu;
749    Ok = (*SetupWin)(HTEKWin, &ts);    Ok = (*SetupWin)(HTEKWin, &ts);
750    FreeTTDLG();    FreeTTDLG();
751    if (Ok)    if (Ok)
752    {    {
753      (*TEKResetWin)(&tk,&ts,OldEmu);      (*TEKResetWin)(&tk,&ts,OldEmu);
754      ChangeTitle();      ChangeTitle();
755      SwitchMenu();      SwitchMenu();
756      SwitchTitleBar();      SwitchTitleBar();
757    }    }
758  }  }
759    
760  void CTEKWindow::OnSetupFont()  void CTEKWindow::OnSetupFont()
761  {  {
762    BOOL Ok;    BOOL Ok;
763    
764    HelpId = HlpTEKSetupFont;    HelpId = HlpTEKSetupFont;
765    ts.VTFlag = 0;    ts.VTFlag = 0;
766    if (! LoadTTDLG()) return;    if (! LoadTTDLG()) return;
767    Ok = (*ChooseFontDlg)(HTEKWin,&tk.TEKlf,&ts);    Ok = (*ChooseFontDlg)(HTEKWin,&tk.TEKlf,&ts);
768    FreeTTDLG();    FreeTTDLG();
769    if (! Ok) return;    if (! Ok) return;
770    
771    (*TEKSetupFont)(&tk,&ts);    (*TEKSetupFont)(&tk,&ts);
772  }  }
773    
774  void CTEKWindow::OnVTWin()  void CTEKWindow::OnVTWin()
775  {  {
776    VTActivate();    VTActivate();
777  }  }
778    
779  void CTEKWindow::OnWindowWindow()  void CTEKWindow::OnWindowWindow()
780  {  {
781    BOOL Close;    BOOL Close;
782    
783    HelpId = HlpWindowWindow;    HelpId = HlpWindowWindow;
784    if (! LoadTTDLG()) return;    if (! LoadTTDLG()) return;
785    (*WindowWindow)(HTEKWin,&Close);    (*WindowWindow)(HTEKWin,&Close);
786    FreeTTDLG();    FreeTTDLG();
787    if (Close) OnClose();    if (Close) OnClose();
788  }  }
789    
790  void CTEKWindow::OnHelpIndex()  void CTEKWindow::OnHelpIndex()
791  {  {
792    OpenHelp(tk.HWin,HH_DISPLAY_TOPIC,0);    OpenHelp(tk.HWin,HH_DISPLAY_TOPIC,0);
793  }  }
794    
795  void CTEKWindow::OnHelpAbout()  void CTEKWindow::OnHelpAbout()
796  {  {
797    if (! LoadTTDLG()) return;    if (! LoadTTDLG()) return;
798    (*AboutDialog)(tk.HWin);    (*AboutDialog)(tk.HWin);
799    FreeTTDLG();    FreeTTDLG();
800  }  }

Legend:
Removed from v.3226  
changed lines
  Added in v.3227

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26