home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1991
/
04
/
txl
/
1_preis
/
wmcom.c
< prev
next >
Wrap
Text File
|
1991-03-06
|
10KB
|
348 lines
/***********************************************************************
* TXL-Interpreter, (C) 1991 toolbox & Kurt Bauer *
**********************************************************************/
#include <windows.h>
#include "kubasic.h"
extern BOOL FAR PASCAL SetTextBox(HWND, unsigned, WORD, LONG);
extern BOOL FAR PASCAL HelpBox(HWND, unsigned, WORD, LONG);
extern BOOL FAR PASCAL Input(HWND, unsigned, WORD, LONG);
extern void _lstrcpy(LPSTR, LPSTR);
void readclipbrd(HWND hWnd);
void writeclipbrd(HWND hWnd,char *writestr);
extern HANDLE hInst,hEditText;
extern HWND hWndEdit;
extern unsigned char Textstr[ZEILENLAENGE];
extern unsigned char Questr[ZEILENLAENGE];
extern unsigned char PrintBuf[ZEILENLAENGE];
extern char ReadBuffer[ZEILENLAENGE];
extern LPSTR Ersetzstr;
extern FARPROC lpProcTextBox,lpProcTemp;
extern int charcnt,TXW1,TYW1,TXW2,TYW2,TXW3,TXW4,TYW3;
extern unsigned int slen;
extern TOKBEF TokBefDesc[];
extern BOOL RUNBREAK,Edit,LoadFile,Drucker,bText,Mono;
void menuecommand(HWND hWnd,WORD wParam)
{
HANDLE hMenu,hClipData;
LPSTR lpClipData;
BYTE *Text;
int icnt;
unsigned int Zeilcnt,Zcnt;
hMenu = GetMenu(hWnd);
switch(wParam)
{
case MW_TEXTHELP:
for (icnt = 0; icnt < 7;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[26].Befehl[icnt],0L);
SendMessage(hWnd,WM_CHAR,' ',0L);
SendMessage(hWnd,WM_CHAR,'?',0L);
SendMessage(hWnd,WM_CHAR,'\r',0L);
break;
case MW_TEXTBOX:
lpProcTemp = MakeProcInstance(SetTextBox,hInst);
DialogBox(hInst,"SETTEXTBOX",hWnd,lpProcTemp);
FreeProcInstance(lpProcTemp);
break;
case MN_HELP:
lpProcTemp = MakeProcInstance(HelpBox,hInst);
DialogBox(hInst,"HELPBOX",hWnd,lpProcTemp);
FreeProcInstance(lpProcTemp);
break;
case MN_LOAD:
if(Edit)
{
wParam=MN_WSEARCH;
SendMessage(hWnd,WM_COMMAND,wParam,0L);
break;
}
for (icnt = 0; icnt < 4;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[17].Befehl[icnt],0L);
case MN_SAVE:
if(Edit)
{
wParam=MN_WERSETZE;
SendMessage(hWnd,WM_COMMAND,wParam,0L);
break;
}
if (wParam==MN_SAVE)
for (icnt = 0; icnt < 4;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[18].Befehl[icnt],0L);
SendMessage(hWnd,WM_CHAR,' ',0L);
SendMessage(hWnd,WM_CHAR,'\"',0L);
break;
case MN_CLS:
for (icnt = 0; icnt < 3;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[12].Befehl[icnt],0L);
case MN_RUN:
if (wParam==MN_RUN)
for (icnt = 0; icnt < 3;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[13].Befehl[icnt],0L);
case MN_TYPESET:
if (wParam==MN_TYPESET)
for (icnt = 0; icnt < 7;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[26].Befehl[icnt],0L);
case MN_LIST:
if (wParam==MN_LIST)
for (icnt = 0; icnt < 4;icnt++)
SendMessage(hWnd,WM_CHAR,TokBefDesc[23].Befehl[icnt],0L);
SendMessage(hWnd,WM_CHAR,'\r',0L);
break;
case MN_SEARCH:
case MN_WSEARCH:
if(bText)
{
if(wParam==MN_SEARCH)
{
strcpy(Questr,"gesuchter Satz/Wort :");
lpProcTextBox = MakeProcInstance(Input, hInst);
DialogBox(hInst,"TextBox",hWnd,lpProcTextBox);
FreeProcInstance(lpProcTextBox);
charcnt = 0;
}
Text = LocalLock(hEditText);
Zeilcnt=(unsigned int)SendMessage(hWndEdit,EM_GETLINECOUNT,0,0L);
Zcnt = slen = 0;
while(Textstr[slen++] >= ' ');
Textstr[slen--]='\0';
do {
if(Text[charcnt] == '\r')
{
Zcnt++;
charcnt++;
}
if(Text[charcnt] == Textstr[0])
if(!(memicmp(Textstr,&Text[charcnt],slen)))
{
if(wParam==MN_SEARCH)
SendMessage(hWndEdit,EM_SCROLL,SB_THUMBPOSITION,0L);
SendMessage(hWndEdit,EM_LINESCROLL,0,MAKELONG(Zcnt,0));
SendMessage(hWndEdit,EM_SETSEL,0,MAKELONG(charcnt,charcnt+slen));
charcnt+=slen;
break;
}
} while(Text[charcnt++] && Zcnt < Zeilcnt);
if(!Text[charcnt] || charcnt >=
(int)SendMessage(hWndEdit,WM_GETTEXTLENGTH,0,0L))
charcnt = 0;
LocalUnlock(hEditText);
}
break;
case MN_ERSETZE:
strcpy(PrintBuf,Textstr);
strcpy(Questr,"ersetzen durch :");
lpProcTextBox = MakeProcInstance(Input, hInst);
DialogBox(hInst,"TextBox",hWnd,lpProcTextBox);
FreeProcInstance(lpProcTextBox);
strcpy(Questr,PrintBuf);
charcnt -= slen;
slen=0;
while(Textstr[slen++] >= ' ');
Textstr[slen--]='\0';
strcpy(PrintBuf,Textstr);
Ersetzstr=(LPSTR)PrintBuf;
strcpy(Textstr,Questr);
charcnt+=slen;
case MN_WERSETZE: if(Ersetzstr==NULL) break;
SendMessage(hWndEdit,EM_REPLACESEL,0,(long)Ersetzstr);
break;
case MN_EDITOR:
if(RUNBREAK) break;
Edit=TRUE;
ShowWindow(hWndEdit,SHOW_OPENWINDOW);
SetFocus(hWndEdit);
WriteProg ();
ClearProg();
LiesDaten();
UpdateWindow(hWndEdit);
break;
case MN_INTERPR:
if(Drucker && !Edit)
{
cscreen();
break;
}
else if(!Edit) break;
SaveDaten();
Edit=FALSE;
ShowWindow(hWndEdit,HIDE_WINDOW);
UpdateWindow(hWnd);
SetFocus(hWnd);
ReadProg ();
SendMessage(hWnd,WM_COMMAND,MN_LIST,0L);
if(bText)
{
Text = LocalLock(hEditText);
LocalUnlock(hEditText);
LocalFree(hEditText);
bText=FALSE;
}
break;
case MN_ELOAD:
Waehlbox();
if(LoadFile) LiesDaten();
InvalidateRect(hWndEdit,(LPRECT)NULL,TRUE);
break;
case MN_ESAVE:
break;
case MN_MONO:
Mono ^=1;
break;
case MN_SCREEN:
cscreen();
break;
case MN_EXIT:
icnt=cexit();
break;
case MN_UNDO:
if(Edit)
SendMessage(hWndEdit,EM_UNDO,0,0l);
break;
case MN_CUT:
if(Edit)
SendMessage(hWndEdit,WM_CUT,0,0l);
break;
case MN_COPY:
if(Edit)
SendMessage(hWndEdit,WM_COPY,0,0l);
else
writeclipbrd(hWnd,ReadBuffer);
break;
case MN_PASTE:
if(Edit)
SendMessage(hWndEdit,WM_PASTE,0,0l);
else
readclipbrd(hWnd);
break;
case MN_CLEAR:
if(Edit)
SendMessage(hWndEdit,WM_CLEAR,0,0l);
break;
case MN_SELECT:
if(Edit)
{
SetFocus(hWndEdit);
SendMessage(hWndEdit,EM_SETSEL,0,MAKELONG(0,
SendMessage(hWndEdit,WM_GETTEXTLENGTH,0,0l)));
}
break;
case MN_DURCHG : TYW3 = (TYW3) ? FALSE : TRUE;
makefont();
break;
case MN_UNTERS : TXW3 = (TXW3) ? FALSE : TRUE;
makefont();
break;
case MN_KURSIV : TXW4 = (TXW4) ? FALSE : TRUE;
makefont();
break;
case MW_NORMAL : TYW2 = 500;
makefont();
break;
case MW_HEAVY : TYW2 = 600;
makefont();
break;
case MN_SYSFON:
case MN_TERFON:
case MN_HELFON:
case MN_COUFON:
case MN_TMSFON:
case MN_ROMFON:
case MN_SCRFON:
case MN_MODFON:
TXW1 =(int)(wParam - 126);
makefont();
break;
case MN_ACHT:
case MN_ZEHN:
case MN_ZWLF:
case MN_DRZN:
case MN_FFZN:
case MN_SHZN:
case MN_ACZN:
case MN_NNZN:
case MN_ZWAN:
case MN_EIZW:
case MN_ZWZW:
case MN_VRZW:
case MN_SXZW:
case MN_SIZW:
case MN_ACZW:
case MN_NNZW:
case MN_DRSG:
case MN_ZWSG:
case MN_FFSG:
case MN_SXSG:
case MN_SISG:
case MN_ACSG:
case MN_NNSG:
case MN_VRZG:
case MN_ZWZG:
case MN_VVZG:
case MN_FFZG:
case MN_ACZG:
case MN_FFZC:
case MN_ZWZC:
case MN_VFZC:
case MN_SXZC:
TYW1=TXW2=(int)wParam;
makefont();
break;
}
}
void writeclipbrd(HWND hWnd,char *writestr)
{
HANDLE hData;
LPSTR lpData;
if(*writestr < ' ') return;
hData = GlobalAlloc(GMEM_MOVEABLE,(DWORD) _lstrlen(writestr));
if(hData)
{
lpData = GlobalLock(hData);
_lstrcpy(lpData, (LPSTR) writestr);
GlobalUnlock(hData);
if (OpenClipboard(hWnd))
{
EmptyClipboard();
SetClipboardData(CF_TEXT,hData);
CloseClipboard();
}
}
}
void readclipbrd(HWND hWnd)
{
HANDLE hClipData;
LPSTR lpClipData;
BYTE *Clipstr;
if (OpenClipboard(hWnd))
{
hClipData = GetClipboardData(CF_TEXT);
CloseClipboard();
if (hClipData)
{
lpClipData = GlobalLock(hClipData);
_lstrcpy((LPSTR)Textstr,lpClipData);
GlobalUnlock(hClipData);
Clipstr=Textstr;
while(*Clipstr)
SendMessage(hWnd,WM_CHAR,*Clipstr++,0L);
}
}
}