[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]


{$X+}
(*
    This program will print strings to the printer
    via the Print Manager if it is enabled.
*)

Program HardCopy_Printing;

uses WinTypes, WinProcs, Strings;

const
  BigButton = 100;
  Message1 = 'Now Printing from Windows!'+#0;
  Message2 = 'With the WIN.INI printer device settings.'+#0;

var
  S: string;
  Wnd, PrintButton: Word;
  DC, PrinterDC: HDC;
  PStr : pChar;
  Temp, PrintType, PrintDrv, PrintPort: pChar;
  PrintInfo: Array[1..80] of Char;

function WindowSetUp(Wnd: hWnd; iMessage, wParam: word; lParam: LongInt): LongInt;
export;
begin
  PStr:= 'Test';
  case iMessage of
    WM_Command: begin
                  case wParam of
                     BigButton: Begin
                                  messagebeep(0);
                                  DC:=GetDC(Wnd);
                                  GetProfileString('windows','device',#0,@PrintInfo,80);
                                  Temp := StrScan(@PrintInfo,',');
                                  PrintType := @PrintInfo;
                                  PrintDrv := Temp + 1;
                                  Temp[0]:= #0;
                                  PrintPort := StrScan(PrintDrv,',');
                                  PrintPort[0] := #0;
                                  Inc(PrintPort);
                                  PrinterDC := CreateDC(PrintDrv, PrintType, PrintPort, nil);
                                  Escape(PrinterDC, STARTDOC, 4, @PStr, nil);
                                  TextOut(PrinterDC, 1,1, Message1, Length(Message1)-1);
                                  TextOut(PrinterDC, 1,20, Message2, Length(Message2)-1);
                                  TextOut(DC, 1,1, Message1, Length(Message1)-1);
                                  TextOut(DC, 1,20, Message2, Length(Message2)-1);
                                  Escape(PrinterDC, NewFrame,0,nil,nil);
                                  Escape(PrinterDC, ENDDOC,0,nil,nil);
                                  DeleteDC(PrinterDC);
                                  ReleaseDC(Wnd, DC);
                                end;
                  end;
                end;

    WM_Destroy: PostQuitMessage(0);
  else
    WindowSetUp:= DefWindowProc(Wnd, iMessage,wParam, lParam);
  end;
end;

Procedure WinMain;
var
  WndClas: TWndClass;
  w: word;
  Msg: tMsg;
begin
  if hPrevInst = 0 then
    begin
      WndClas.Style := CS_HReDraw or CS_VReDraw;
      WndClas.lpfnWndProc:= @WindowSetUp;
      WndClas.cbClsExtra:= 0;
      WndClas.cbWndExtra:= 0;
      WndClas.hInstance:= hInstance;
      WndClas.hIcon:= 0;
      WndClas.hCursor:= 1;
      WndClas.hbrBackground:= GetStockObject(White_Brush);
      WndClas.lpszMenuName:= '';
      WndClas.lpszClassName:= 'AWindowClass';
      if not RegisterClass(WndClas) then
	halt;
    end;
    Wnd:= CreateWindow('AWindowClass','Printing Text to Printer',
		       WS_OverLapped or WS_SysMenu or WS_MinimizeBox,
		       10,10,400,400,
		       0,0,hInstance, nil);
    PrintButton:= CreateWIndow('Button','Print',
                              WS_Child or WS_Visible or BS_DefPushButton,
                              20,200,160,100,
                              Wnd,BigButton,hInstance, nil);
    ShowWindow(Wnd, SW_ShowNormal);
    UpDateWindow(Wnd);
    while GetMessage(Msg,0,0,0) do
      begin
	TranslateMessage(Msg);
	DispatchMessage(Msg);
      end;
end;

begin              { ********** Main ********** }
  WinMain;
end.


[Back to WIN-OS2 SWAG index]  [Back to Main SWAG index]  [Original]