From 6d6bb88a0215b87a4a47ed86a84ae3c75d399962 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Sun, 24 Apr 2016 18:05:02 -0400 Subject: Initial import of 5.0 source code with minor changes to use termios on Linux. --- wsedt.c | 1175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1175 insertions(+) create mode 100644 wsedt.c (limited to 'wsedt.c') diff --git a/wsedt.c b/wsedt.c new file mode 100644 index 0000000..31f687b --- /dev/null +++ b/wsedt.c @@ -0,0 +1,1175 @@ +/*Copyright (c) Anker Berg-Sonne, 1985,1986,1987*/ +#include "proto.h" +#include "commdlg.h" +#include "print.h" + +char szAppName[10]; +char szWindowTitle[30]; +HANDLE hInst, hCursor; +FARPROC lpprocAbout; +FARPROC lpprocPrompt; +HWND Curr_Wnd, Buf_Wnd[Maxbuffers]; +LOGFONT LF; +int Char_Width, Rfreshed=0, Char_Height, Dragging=0, DragX, DragY; +int Ch_Ch, Ch_Count=0, First=1, Cursor_On=0, Sav_Cur, Def_Height, + Def_Width, Saved_Num_Lock, Lst_Index; +char Work[80]; +struct SREGS Rrv; +char Fil_String[128], Sel_Dir[80]; +char Keyb_State[256]; +int Save_My_Num_Lock, Save_Their_Num_Lock; + +extern int __argc; +extern char **__argv; + +BOOL FAR PASCAL _export About(HWND hDlg,unsigned message,WORD W,LONG L) +{if (message == WM_COMMAND) + {EndDialog( hDlg, TRUE ); + return TRUE; + } else + if (message == WM_INITDIALOG) + return TRUE; else + return FALSE; +} + +void SedtPaint(HWND H,PAINTSTRUCT *pps,int Is_Current ) +{HBRUSH hbr, hbrOld; + HDC hDC; + if (Rfreshed) + {Rfreshed=0; + return; + } + hDC=pps->hdc; + if (pps->fErase) + {hbr = CreateSolidBrush( GetSysColor(COLOR_WINDOW) ); + hbrOld = (HBRUSH)SelectObject( hDC, (HANDLE)hbr ); + FillRect( hDC, (LPRECT)&pps->rcPaint, hbr ); + SelectObject( hDC, (HANDLE)hbrOld ); + DeleteObject( (HANDLE)hbr ); + } + SetBkMode( hDC, OPAQUE); + if (Out_Count) + Out_Zap(); + S_Header(); + if (In_Help) + {Display_Help(Help_Pos); + Out_Zap(); + Win_On_Curs(); + } else + {if (Show_Ruler) + S_Ruler(); + Fill_Screen(Rel_First,Rel_Last); + if (!Is_Current) + Mark_Cursor(); + Out_Zap(); + } +} + +BOOL SedtInit(HANDLE hInstance ) +{WNDCLASS SedtClass; + LoadString( hInstance, IDSNAME, (LPSTR)szAppName, 10 ); + LoadString( hInstance, IDSTITLE, (LPSTR)szWindowTitle, 30 ); + SedtClass.hCursor = LoadCursor( (HINSTANCE) NULL, (LPCSTR)IDC_IBEAM ); + SedtClass.hIcon = LoadIcon( hInstance, (LPSTR)szAppName ); + SedtClass.lpszMenuName = (LPSTR)"SedtMenu"; + SedtClass.lpszClassName = (LPSTR)szAppName; + SedtClass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH ); + SedtClass.hInstance = hInstance; + SedtClass.style = CS_VREDRAW | CS_HREDRAW | CS_CLASSDC; + SedtClass.lpfnWndProc = SedtWndProc; + SedtClass.cbClsExtra = 0; + SedtClass.cbWndExtra = 0; + if (!RegisterClass( &SedtClass ) ) + return FALSE; + return TRUE; /* Initialization succeeded */ +} + +int Make_Window(int B,int Show) +{HWND hWnd; + HMENU hMenu, hMenu1; + HDC hDC; + RECT Rect; + TEXTMETRIC TM; + HANDLE Old_Font; + LOGFONT SLF; + int I; + if ((hWnd = CreateWindow((LPSTR)szAppName, + (LPSTR)szWindowTitle, + WS_OVERLAPPED|WS_VSCROLL|WS_MINIMIZEBOX|WS_MAXIMIZEBOX| + WS_THICKFRAME|WS_SYSMENU, + CW_USEDEFAULT,0,CW_USEDEFAULT,0, + (HWND)NULL, /* no parent */ + (HMENU)NULL, /* use class menu */ + (HANDLE)hInst, /* handle to window instance */ + (LPSTR)NULL /* no params to pass on */ + ))==(HWND)NULL) + return 0; + Curr_Wnd=Buf_Wnd[B]=hWnd; + hDC = GetDC( hWnd ); + LF.lfWidth=0; + LF.lfEscapement=0; + LF.lfOrientation=0; + LF.lfItalic=0; + LF.lfUnderline=0; + LF.lfStrikeOut=0; + LF.lfCharSet=ANSI_CHARSET; + LF.lfOutPrecision=OUT_DEFAULT_PRECIS; + LF.lfClipPrecision=CLIP_DEFAULT_PRECIS; + LF.lfQuality=DRAFT_QUALITY; + LF.lfPitchAndFamily=FF_MODERN; + if (Def_Font!=0) + {strcpy(LF.lfFaceName,"Courier New"); + LF.lfWeight=FW_BOLD; + LF.lfHeight= -Def_Font; + } else + {strcpy(LF.lfFaceName,"Fixedsys"); + LF.lfWeight=FW_DONTCARE; + LF.lfHeight=-9; + } + SLF=LF; + SLF.lfHeight=MulDiv(SLF.lfHeight,GetDeviceCaps(hDC,LOGPIXELSY),72); + Buf_Font=CreateFontIndirect((LPLOGFONT)&SLF); + Old_Font=SelectObject(hDC,Buf_Font); + GetTextMetrics( hDC, (LPTEXTMETRIC)&TM ); + SelectObject(hDC,Old_Font); + GetClientRect(Curr_Wnd,(LPRECT)&Rect); + Scr_Width=(Rect.right+1)/(Char_Width=TM.tmAveCharWidth); + Scr_Length=(Rect.bottom+1)/(Char_Height=TM.tmHeight); + ReleaseDC( hWnd, hDC ); + SetScrollRange(hWnd,SB_VERT,0,100,1); + if (Zoom_Windows) + ShowWindow(hWnd,Show|SW_SHOWMAXIMIZED); else + ShowWindow( hWnd, Show ); + Rfreshed=1; + UpdateWindow( hWnd ); + hMenu=GetMenu(hWnd); + for (I=0;I=Scr_Width) + {while (My_Col-Scr_Shift>=Scr_Width) + Scr_Shift+=Shift_Screen?Shift_Screen:Scr_Width/2; + } + } + Offset=Rel_First+Rel_Last; + Rel_First=Show_Ruler?3:2; + Rel_Last=Scr_Length-2; + My_Line=Home=(Rel_First+Rel_Last+1)/2; + Rel_First-=Home; + Rel_Last-=Home; + if (Float_Cursor) + Set_Offset(Offset); + SetCaretPos((int)(Char_Width*(My_Col-Scr_Shift-1)), + (int)(Char_Height*(My_Line-1))); + } + if (!Is_Current) + Restore_Window(B); + break; + case WM_ERASEBKGND: + GetClientRect( hWnd, (LPRECT)&rect ); + hbr = CreateSolidBrush( GetSysColor(COLOR_WINDOW) ); + hbrOld = (HBRUSH)SelectObject( (HDC)wParam, (HANDLE)hbr ); + FillRect( (HDC)wParam, (LPRECT)&rect, hbr ); + SelectObject( (HDC)wParam, (HANDLE)hbrOld ); + DeleteObject( (HANDLE)hbr ); + break; + case WM_QUERYENDSESSION: + for (I=0;IBuf_Lines) + Ent_Count=Buf_Lines; + Abs_Line(); + break; + } + Move_Entity(); + Upd_Header(); + Win_On_Curs(); + } + Out_Zap(); + break; + case WM_COMMAND: + if (In_Help) + break; + if (!Mouse_OK) + break; + Win_Off_Curs(); + switch (wParam) + {case FILE_OPEN: + if (Open_File_Dialog()) + {Make_File(); + Count=1; + Edit_File(Com_Arg); + Upd_Header(); + } + break; + case FILE_SAVE: + if ((S=Outfile)==NULL||S[0]==0) + Error(2,No_Output_File_Txt); else + {Wr_Buffer(S); + } + if (!Err_Flag) + Clr_Changes(); + Upd_Header(); + break; + case FILE_SAVE_AS: + if (Save_As_Dialog()) + {Make_File(); + strcpy(New_File,Com_Arg); + Wr_Buffer(Outfile=New_File); + S_Header(); + if (!Err_Flag) + Clr_Changes(); + Upd_Header(); + } + break; + case FILE_INSERT: + if (Open_File_Dialog()) + {Make_File(); + Include_File(Com_Arg,File_Not_Found_Txt); + Fill_Screen(0,Rel_Last); + Set_Changes(); + S_Header(); + } + break; + case FILE_QUIT: + if (In_Help) + break; + Win_Quit(); + break; + case FILE_ABOUT: + DialogBox( hInst, MAKEINTRESOURCE(ABOUTBOX), hWnd, lpprocAbout ); + break; + case FILE_PRINT: + Print_Buffer(); + break; + case WINDOW_0: + case WINDOW_1: + case WINDOW_2: + case WINDOW_3: + Ch_Window(wParam-20); + break; + case WINDOW_SWITCH: + Other_Window(); + break; + case FILE_NEW: + Zero(); + break; + case EDIT_CLEAR: + Reset(); + break; + case EDIT_CUT: + This_Cmd=C_Delete; + Init_Entity(); + Sel_Range(); + if (!Err_Flag) + {if (Blk_Mode) + Blk_Rem_It(Past_String); else + Rem_It(Past_String); + Set_Changes(); + } + break; + case EDIT_PASTE: + Count=1; + Paste(); + Upd_Header(); + break; + case RULER_0: + case RULER_1: + case RULER_2: + case RULER_3: + case RULER_4: + case RULER_5: + case RULER_6: + case RULER_7: + case RULER_8: + case RULER_9: + Readruler((char)('0'+wParam-40)); + if (Show_Ruler) + S_Ruler(); + break; + case HELP: + strcpy(Com_Arg,Do_Mapping("HELP.HLP")); + Do_Help(); + break; + case FONT_SELECT: + Win_Font(); + break; + } + Out_Zap(); + Win_On_Curs(); + break; + default: + return DefWindowProc( hWnd, message, wParam, lParam ); + } + return(0L); +} + +void Win_Scroll(int T,int B,int S) +{RECT Rect; + Rect.top=(T-1)*Char_Height; + Rect.bottom=B*Char_Height; + Rect.left=0; + Rect.right=Scr_Width*Char_Width; + ScrollWindow(Curr_Wnd,0,-S*Char_Height,&Rect,&Rect); + Rfreshed=1; + UpdateWindow(Curr_Wnd); +} + +void Win_Clear() +{HDC hDC; + RECT rect; + HBRUSH hbr, hbrOld; + hDC = GetDC(Curr_Wnd); + GetClientRect( Curr_Wnd, (LPRECT)&rect ); + hbr = CreateSolidBrush( GetSysColor(COLOR_WINDOW) ); + hbrOld = (HBRUSH)SelectObject( hDC, (HANDLE)hbr ); + FillRect( hDC, (LPRECT)&rect, hbr ); + SelectObject( hDC, (HANDLE)hbrOld ); + DeleteObject( (HANDLE)hbr ); + ReleaseDC(Curr_Wnd, hDC ); +} + +void Win_Erase(int L,int C,int W) +{HDC hDC; + RECT rect; + HBRUSH hbr, hbrOld; + hDC = GetDC(Curr_Wnd); + rect.top=(L-1)*Char_Height; + rect.left=(C-1)*Char_Width; + rect.bottom=rect.top+Char_Height; + rect.right=rect.left+W*Char_Width; + hbr = CreateSolidBrush( GetSysColor(COLOR_WINDOW) ); + hbrOld = (HBRUSH)SelectObject( hDC, (HANDLE)hbr ); + FillRect( hDC, (LPRECT)&rect, hbr ); + SelectObject( hDC, (HANDLE)hbrOld ); + DeleteObject( (HANDLE)hbr ); + ReleaseDC(Curr_Wnd, hDC ); +} + +void Win_On_Curs() +{ + if (Cursor_On) + Win_Off_Curs(); + SetCaretPos((int)(Char_Width*(My_Col-Scr_Shift-1)), + (int)(Char_Height*(My_Line-1))); + ShowCaret(Curr_Wnd); + Cursor_On=1; +} + +void Win_Off_Curs() +{ + HideCaret(Curr_Wnd ); + Cursor_On=0; +} + +void Win_Getmem(HANDLE H,int A,int L) +{LPSTR P; + P=GlobalLock(H); + LockData(0); + segread(&Rrv); + movedata(HIWORD(P),LOWORD(P),Rrv.ds,A,L); + UnlockData(0); + GlobalUnlock(H); +} + +void Win_Putmem(int A,HANDLE H,int L) +{LPSTR P; + P=GlobalLock(H); + LockData(0); + segread(&Rrv); + movedata(Rrv.ds,A,HIWORD(P),LOWORD(P),L); + UnlockData(0); + GlobalUnlock(H); +} + +HANDLE Win_Alloc(int L) +{ + return GlobalAlloc(GMEM_MOVEABLE,(long)L); +} + +void Win_Free(HANDLE H) +{ + GlobalFree(H); +} + +void WinText(int L,int C,char *S,int A) +{HDC hDC; + HANDLE Old_Font; + hDC = GetDC(Curr_Wnd); + Old_Font=SelectObject(hDC,Buf_Font); + SetBkMode( hDC, OPAQUE); + if (A&A_Reverse) + {SetTextColor(hDC,GetSysColor(COLOR_WINDOW)); + SetBkColor(hDC,GetSysColor(COLOR_WINDOWTEXT)); + } else + {SetTextColor( hDC, GetSysColor(COLOR_WINDOWTEXT) ); + SetBkColor(hDC,GetSysColor(COLOR_WINDOW)); + } + TextOut(hDC,Char_Width*(C-1),Char_Height*(L-1), + (char FAR *)S,strlen(S)); + SelectObject(hDC,Old_Font); + ReleaseDC(Curr_Wnd, hDC ); +} + +void WinChar() +{static MSG msg; + int I; + static Last_Character, Last_Scancode; + if (Ch_Count>0) + {Ch_Count--; + Character=Last_Character; + Scancode=Last_Scancode; + return; + } + Rfreshed=0; + while (1) + {if (Working_Flag) + Clr_Working(); + Err_Flag=0; + if (!GetMessage((LPMSG)&msg,(HWND)NULL,0,0)) + {Not_End=0; + return; + } + if (msg.message==WM_CHAR) + {Ch_Count=(int)(msg.lParam&0xFFFF)-1; + Last_Character=Character=msg.wParam; + if (Do_Debug) + Diag("Character:Scancode=%d,Character=%d",Scancode,Character); + return; + } else + if (msg.message==WM_KEYDOWN) + {Ch_Count=(int)(msg.lParam&0xFFFF)-1; + Last_Scancode=Scancode=(int)(msg.lParam>>16)&0xFF; + if (Set_Num_Lock!=-1&&Scancode==0x45) + {GetKeyboardState((BYTE far *)Keyb_State); + Keyb_State[VK_NUMLOCK]=Set_Num_Lock; + SetKeyboardState((BYTE far *)Keyb_State); + } + if (Do_Debug) + Diag("Scancode=%d,Window code=%d",Scancode,msg.wParam); + for (I=0;I0) + SetDlgItemText(hDlg,PROMPTINPUT,(LPSTR)Lst_Input[--Lst_Index]); + break; + case PROMPTPREV: + if (Lst_Index<9) + SetDlgItemText(hDlg,PROMPTINPUT,(LPSTR)Lst_Input[++Lst_Index]); + break; + } + break; + case WM_INITDIALOG: + Prompt_Init(hDlg); + break; + default: + return FALSE; + } + return TRUE; +} + +int Win_Newwindow(int B,int Show) +{ + return Make_Window(B,Show); +} + +void Win_Topwindow(int B) +{ + SetFocus(Curr_Wnd=Buf_Wnd[B]); +} + +void Swap_Window(int B) +{ + Out_Zap(); + Sav_Window(Cur_Buffer); + Sav_Cur=Cur_Buffer; + Cur_Buffer=B; + Current=(&Main_Buffer); + Load_Window(Cur_Buffer); + Curr_Wnd=Buf_Wnd[B]; +} + +void Restore_Window(int I) +{ + Out_Zap(); + Sav_Window(Cur_Buffer); + Cur_Buffer=Sav_Cur; + Current=(&Main_Buffer); + Load_Window(Cur_Buffer); + Curr_Wnd=Buf_Wnd[Cur_Buffer]; +} + +void Win_Name(char *S) +{int I; + HMENU hMenu; + strcpy(Com_Arg,(char *)Txt_Sedt); + if (S==NULL) + strcat(Com_Arg,(char *)Txt_Untitled); else + strcat(Com_Arg,S); + SetWindowText(Curr_Wnd,Com_Arg); + for (I=0;I0) + LF.lfHeight*=-1; + LF.lfHeight--; + LF.lfWidth=0; + SLF=LF; + SLF.lfHeight=MulDiv(SLF.lfHeight,GetDeviceCaps(hDC,LOGPIXELSY),72); + Buf_Font=CreateFontIndirect(&SLF); + Old_Font=SelectObject(hDC,Buf_Font); + GetClientRect(Curr_Wnd,(LPRECT)&Rect); + GetTextMetrics( hDC, (LPTEXTMETRIC)&TM ); + Scr_Width=(Rect.right+1)/(Char_Width=TM.tmAveCharWidth); + Scr_Length=(Rect.bottom+1)/(Char_Height=TM.tmHeight); + if (Cursor_On) + HideCaret(Curr_Wnd); + DestroyCaret(); + CreateCaret( Curr_Wnd, (HBITMAP)NULL,(int)Char_Width, + (int)Char_Height); + SetCaretPos((int)(Char_Width*(My_Col-Scr_Shift-1)), + (int)(Char_Height*(My_Line-1))); + if (Cursor_On) + ShowCaret(Curr_Wnd); + SelectObject(hDC,Old_Font); + ReleaseDC(Curr_Wnd,hDC); + Refresh(); +} + +void Win_Smaller() +{RECT Rect; + HDC hDC; + TEXTMETRIC TM; + HANDLE Old_Font; + LOGFONT SLF; + hDC = GetDC(Curr_Wnd); + DeleteObject(Buf_Font); + if (LF.lfHeight>0) + LF.lfHeight*=-1; + LF.lfHeight++; + LF.lfWidth=0; + SLF=LF; + SLF.lfHeight=MulDiv(SLF.lfHeight,GetDeviceCaps(hDC,LOGPIXELSY),72); + Buf_Font=CreateFontIndirect(&SLF); + Old_Font=SelectObject(hDC,Buf_Font); + GetClientRect(Curr_Wnd,(LPRECT)&Rect); + GetTextMetrics( hDC, (LPTEXTMETRIC)&TM ); + Scr_Width=(Rect.right+1)/(Char_Width=TM.tmAveCharWidth); + Scr_Length=(Rect.bottom+1)/(Char_Height=TM.tmHeight); + if (Cursor_On) + HideCaret(Curr_Wnd); + DestroyCaret(); + CreateCaret( Curr_Wnd, (HBITMAP)NULL,(int)Char_Width, + (int)Char_Height); + SetCaretPos((int)(Char_Width*(My_Col-Scr_Shift-1)), + (int)(Char_Height*(My_Line-1))); + if (Cursor_On) + ShowCaret(Curr_Wnd); + SelectObject(hDC,Old_Font); + ReleaseDC(Curr_Wnd,hDC); + Refresh(); +} + +void Win_Set_Num_Lock(void) +{Save_My_Num_Lock=1; + GetKeyboardState((BYTE far *)Keyb_State); + Save_Their_Num_Lock=Keyb_State[VK_NUMLOCK]; + Keyb_State[VK_NUMLOCK]=1; + SetKeyboardState((BYTE far *)Keyb_State); +} + +void Win_Clear_Num_Lock(void) +{Save_My_Num_Lock=0; + GetKeyboardState((BYTE far *)Keyb_State); + Save_Their_Num_Lock=Keyb_State[VK_NUMLOCK]; + Keyb_State[VK_NUMLOCK]=0; + SetKeyboardState((BYTE far *)Keyb_State); +} + +void Win_Reset_Num_Lock(void) +{GetKeyboardState((BYTE far *)Keyb_State); + Keyb_State[VK_NUMLOCK]=Save_Their_Num_Lock; + SetKeyboardState((BYTE far *)Keyb_State); +} + +int Open_File_Dialog() +{OPENFILENAME Ofn; + Ofn.lStructSize=sizeof(OPENFILENAME); + Ofn.hwndOwner=Curr_Wnd; + Ofn.lpstrFilter=NULL; + Ofn.lpstrCustomFilter=NULL; + strcpy(Fil_String,"*.*"); + Ofn.lpstrFile=Fil_String; + Ofn.nMaxFile=128; + Ofn.lpstrFileTitle=NULL; + Ofn.lpstrInitialDir=Sel_Dir; + Ofn.lpstrTitle=NULL; + Ofn.Flags=OFN_PATHMUSTEXIST|OFN_HIDEREADONLY; + Ofn.lpstrDefExt=NULL; + if (GetOpenFileName(&Ofn)) + {strcpy(Com_Arg,Fil_String); + strncpy(Sel_Dir,Fil_String,Ofn.nFileOffset); + Sel_Dir[Ofn.nFileOffset]=0; + return 1; + } else + return 0; +} + +int Save_As_Dialog() +{OPENFILENAME Ofn; + Ofn.lStructSize=sizeof(OPENFILENAME); + Ofn.hwndOwner=Curr_Wnd; + Ofn.lpstrFilter=NULL; + Ofn.lpstrCustomFilter=NULL; + strcpy(Fil_String,Outfile); + Ofn.lpstrFile=Fil_String; + Ofn.nMaxFile=128; + Ofn.lpstrFileTitle=NULL; + Ofn.lpstrInitialDir=NULL; + Ofn.lpstrTitle=NULL; + Ofn.Flags=OFN_PATHMUSTEXIST|OFN_HIDEREADONLY; + Ofn.lpstrDefExt=NULL; + if (GetSaveFileName(&Ofn)) + {strcpy(Com_Arg,Fil_String); + strncpy(Sel_Dir,Fil_String,Ofn.nFileOffset); + Sel_Dir[Ofn.nFileOffset]=0; + return 1; + } else + return 0; +} + +void Print_Buffer() +{PRINTDLG Dlg; + memset(&Dlg,0,sizeof(PRINTDLG)); + Dlg.lStructSize=sizeof(PRINTDLG); + Dlg.hwndOwner=Curr_Wnd; + Dlg.Flags=PD_RETURNDC|PD_NOPAGENUMS|PD_NOSELECTION; + if (PrintDlg(&Dlg)) + {int X, Y, MaxX, MaxY, Char_Width, Char_Height; + long Save_Col; + char Output[100]; + int Out_Length=0, Out_X, Out_Y, I; + TEXTMETRIC TM; + DOCINFO DI; + HANDLE Font; + LOGFONT PLF; + SetCursor(LoadCursor((HINSTANCE)NULL,IDC_WAIT)); + PLF=LF; + PLF.lfHeight=MulDiv(PLF.lfHeight,GetDeviceCaps(Dlg.hDC,LOGPIXELSY),72); + Font=CreateFontIndirect(&PLF); + MaxX=GetDeviceCaps(Dlg.hDC,HORZRES); + MaxY=GetDeviceCaps(Dlg.hDC,VERTRES); + SelectObject(Dlg.hDC,Font); + GetTextMetrics( Dlg.hDC, (LPTEXTMETRIC)&TM ); + Char_Width=TM.tmAveCharWidth; + Char_Height=TM.tmHeight; + DI.cbSize=sizeof(DOCINFO); + DI.lpszDocName=Outfile; + DI.lpszOutput=NULL; + StartDoc(Dlg.hDC,&DI); + StartPage(Dlg.hDC); + B_Goto(Current,1); + X=0; + Y=Char_Height*4; + Save_Col=My_Col; + My_Col=1; + while (Current->Pos<=Current->Bufsize) + {char C, Rep[10]; + int L; + C=B_Get(Current); + if (C==12) + {if (Out_Length>0) + {TextOut(Dlg.hDC,Out_X,Out_Y,Output,Out_Length); + Out_Length=0; + } + EndPage(Dlg.hDC); + StartPage(Dlg.hDC); + SelectObject(Dlg.hDC,Font); + X=0; + My_Col=1; + Y=Char_Height*4; + } else + if (C==10) + {if (Out_Length>0) + {TextOut(Dlg.hDC,Out_X,Out_Y,Output,Out_Length); + Out_Length=0; + } + X=0; + My_Col=1; + Y+=Char_Height; + if (Y>MaxY-Char_Height*4&&MaxY!=0) + {EndPage(Dlg.hDC); + StartPage(Dlg.hDC); + SelectObject(Dlg.hDC,Font); + Y=Char_Height*4; + } + } else + if (C==13) + ; else + if (X<=MaxX||MaxX==0) + {L=Char_Rep(C,Rep); + if (Out_Length+L>100) + {TextOut(Dlg.hDC,Out_X,Out_Y,Output,Out_Length); + Out_Length=0; + } + if (Out_Length==0) + {Out_X=X; + Out_Y=Y; + } + for (I=0;I<=L;I++) + Output[Out_Length+I]=Rep[I]; + Out_Length+=L; + X+=Char_Width*L; + My_Col+=L; + } + } + if (Out_Length>0) + {TextOut(Dlg.hDC,Out_X,Out_Y,Output,Out_Length); + Out_Length=0; + } + My_Col=Save_Col; + EndPage(Dlg.hDC); + EndDoc(Dlg.hDC); + DeleteDC(Dlg.hDC); + DeleteObject(Font); + if (Dlg.hDevMode!=(HGLOBAL)NULL) + GlobalFree(Dlg.hDevMode); + if (Dlg.hDevNames!=(HGLOBAL)NULL) + GlobalFree(Dlg.hDevNames); + SetCursor(LoadCursor((HINSTANCE)NULL,IDC_IBEAM)); + } +} -- cgit v1.2.3