home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * ....................................... *
- * . . *
- * . TOOLBOX - INTERPRETER . *
- * . WM_COMMAMD MESSAGES . *
- * . WMCOM.C . *
- * . M.Beising & K.Bauer & TOOLBOX . *
- * ....................................... *
- *************************************************************************/
-
- #include <windows.h>
- #include "txl.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);
-
- void readclipbrd(HWND hWnd,BOOL ausgabe);
- void writeclipbrd(HWND hWnd,char *writestr);
- void MakeHelpPathName(char *szFileName);
-
- 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],szHelpFileName[129];
- extern LPSTR Ersetzstr;
- extern FARPROC lpProcTextBox,lpProcTemp;
- extern int Readcnt,charcnt,TXW1,TYW1,TXW2,TYW2,TXW3,TXW4,TYW3;
-
- extern unsigned int slen;
- extern TOKBEF TokBefDesc[];
- extern BOOL bHelp,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_TEXTBOX:
- lpProcTemp = MakeProcInstance(SetTextBox,hInst);
- DialogBox(hInst,"SETTEXTBOX",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 ();
- ReadBuffer[0]='\0';
- Readcnt=0;
- 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,TRUE);
- 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,BOOL ausgabe)
- {
- 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;
- if(ausgabe)
- while(*Clipstr)
- SendMessage(hWnd,WM_CHAR,*Clipstr++,0L);
- }
- }
- }
-
- void MakeHelpPathName(szFileName)
- char * szFileName;
- {
- char * pcFileName;
- int nFileNameLen;
-
- nFileNameLen = GetModuleFileName(hInst,szFileName,129);
- pcFileName = szFileName + nFileNameLen;
-
- while (pcFileName > szFileName) {
- if (*pcFileName == '\\' || *pcFileName == ':') {
- *(++pcFileName) = '\0';
- break;
- }
- nFileNameLen--;
- pcFileName--;
- }
-
- if ((nFileNameLen+13) < 129) {
- lstrcat(szFileName, "txl.hlp");
- }
-
- else {
- lstrcat(szFileName, "?");
- }
-
- return;
- }
-