|
1. Canvas 를 직접 다뤄서 사용하시는 방법이 있습니다.
BeginDoc을 미리해주고, Canvas에 계산을 해서 쭉쭉 그려낸 담에, EndDoc를 해주는 방법이 있겠죠. 물론 처리가 많이 필요하다고 생각됩니다.
2. 베이직처럼 이용하는 방법
베이직에서 Print #1, "Hello" 이용하는 것처럼 이용하는 방법이 있습니다. 하지만, 네트워크 프린터에서는 동작을 하지 않고요, 어떤 사람은 2000에서도 동작을 안한다는 사람도 있는데, 대부분이 잘 동작합니다. (아마도 그 사람의 특성을 타는것 같군요)
아래 예제는 버튼을 클릭하면 stString의 내용을 찍는 예제입니다. 일반 낱장연속공급용지에서는 결과가 어떻게 나올지 모르겠네요.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned long itLength;
HFILE hfPrinter;
OFSTRUCT osStruct;
String stString;
hfPrinter = OpenFile("LPT1", &osStruct, OF_WRITE);
stString = "HELLO";
if(hfPrinter) {
WriteFile((void *)hfPrinter, stString.c_str(), stString.Length(), &itLength, NULL);
WriteFile((void*)hfPrinter, "\n\r\0", 3, &itLength, NULL);
CloseHandle((void*)hfPrinter);
}
}
//---------------------------------------------------------------------------
참새 님이 쓰신 글 :
:
: 그동안 많은 질문과 답변을 통해
: 나름대로 처음이지만 빌더를 이용한 작업 결과들이
: 하나둘씩 눈에 보이는 것 같아
: 즐겁습니다.
: 이제 거의 마무리 단계인데요.
: 저는 리스트뷰에 서버와의 소켓통신을 통해
: 얻어온 값을 한라인씩 기록하고 있습니다.
: 그런데 그 값을 프린트하려면 어떻게 하나요?
: 전체를 한번에 프린트하는 것은 bigindoc(), enddoc()
: 과 같은 것을 이용하면 되는데
: 제가 해야 하는 것은 리스트뷰에 한라인이 들어오면
: 그 라인을 프린트로 보내는 것입니다.
: 프린트는 예전 도트(라인)프린트라 A4지와 같이 한장
: 단위가 아닌 길게 연결되어 나오는 종이거든요..
: 그래서 한라인씩 보내서 그 정보를 리스트뷰에
: 표시된 것을 똑같이 프린트하는 것입니다.
: 설명이 제대로 되었는지 모르겠네요.
: 어찌보면 한라인씩 프린트 디바이스로 보내는 거라
: 어려울 것 같지 않았는데 잘 안되네요.
: 그럼 조언 부탁드립니다. 일요일에도 이문제땜에 고생하고
: 있습니다. 그럼...
:
|