[ MAD-MAX @ 22.05.2002. 23:54 ] @
Problem inace ima veze sa programom za igraonicu. A konkretno ovaj program bi bio na serveru i stampao bi kao neke kupone sa podacima iz baze.

Ovako. Imam u MySQL bazi (koja je inace na serveru) dva polja: password i broj kupona. E sad ja bih hteo program koji ce pritiskom na dugme da odstampa na jednom A4 listu 10 razlicitih kupona. Za finese oko izgleda brinucu kasnije ali za sada samo hocu da na kuponu budu broj i passw. Za pocetak sam hteo da napravim bilo kakav program samo da nesto stampa.

Posto nemam puno iskustva sa C++ GUI programiranjem a jos manje sa stampanjem pogledao sam u helpu i malo u knjizi VC++ 6 Biblija. Sledeci kod mi se ucinio zanimljivim ali na zalost nije radio. ZASTO? Ovakav kod sam nasao u knjizi a prebacio sam ga u funkciju za dugme: (bez, naravno, void ... :)))

void Print2Page()
{
HDC hDC;
DOCINFO di;

hDC = CreateDC("WINSPOOL", "HP Laser Printer", NULL, NULL);

memset(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Sample Document";

if(StartDoc(hDC,&di) != SP_ERROR)
{
StartPage(hDC);
TextOut(hDC, 10, 10, "Ovo je na prvoj strani", 18);
EndPage(hDC);

StartPage(hDC);
TextOut(hDC, 10, 10, "Ovo je na drugoj strani", 18);
EndPage(hDC);

EndDoc(hDC);
}
DeleteDC(hDC);
}

Sta tu ne valja?

Greska je sledeca: [C++ Error] Unit1.cpp(26): E2193 Too few parameters in call to 'memset(void *,int,unsigned int)'

A ako stavim: memset(&di, 0,sizeof(DOCINFO));
Onda kompajliranje lepo prodje ali kad startujem program nista se ne desava pritiskom da button :)!!!!!!

A ako stavim: memset(&di, sizeof(DOCINFO), 0);
Onda se pjavljuje greska pri pritisku na dugme u modulu GDI32.dll.

Napominjem da je u knjizi bilo bas kako sam napisao s tim sto je umesto sizeof bilo i jeste sizof sto sam, naravno, ja promenio :)))




A ovo je radilo uz jednu button i jednu memo kontrolu:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TPrinter *Prntr = Printer();
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight-200);
Prntr->BeginDoc();
for( int i = 0; i < Memo1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(Memo1->Lines->Strings)),
Memo1->Lines->Strings);
Prntr->Canvas->Brush->Color = clBlack;
Prntr->Canvas->FrameRect(r);
Prntr->EndDoc();
}

Nalazio sam jos mnogo drugih primera koji naravno NISU radili osim ovog zadnjeg ali mi se cini da je prvi najpristupacniji jedino je problem sto ne radi.

Pored ovoga bih da pitam/zamolim da l' neko moze da mi kaze kako najlakse da uradim ono sto hocu (naveo sam gore) i jos ako bude i code-a SUPER :)))

Thanks
[ leka @ 23.05.2002. 14:01 ] @
Taj zadnji radi zato jer koristi tehnike koje su ugradjene u Borland C++ Builder i koje provereno rade. Pogledaj Canvas objekat i metode (svaka metoda u BC++B ima sjajan primer kako se koristi) i znaces kako da stampas posle nekoliko sati ucenja.
[ MAD-MAX @ 23.05.2002. 15:01 ] @
Mislis da bi sa ovim drugim "primerom" mogao da uradim ono sto zelim? Meni se cini da je ovaj prvi (koristi WinAPI) laksi a i nisi mi odgovorio zasto ne radi.

Puno hvala
[ Dragi Tata @ 23.05.2002. 17:05 ] @
Evo, ovde sve imaš (i više nego što ti treba)

http://msdn.microsoft.com/libr...ry/en-us/gdi/prntspol_2ik4.asp
[ leka @ 23.05.2002. 17:56 ] @
Malo cudno, ali ja tu stranu ne mogu da vidim iz Opere za Linux :) Pitam se samo zasto... ;>
[ Dragi Tata @ 23.05.2002. 18:20 ] @
Hmmm, sa Netscape 6 se vidi...
[ Ivan Tanasic @ 23.05.2002. 20:48 ] @
fprintf uvek pali :))) a sobzirom da tekst koji je tebi potreban ne zahteva neko narocito formatiranje u smislu boje/fonta/velicine fprintf radi samo tako posao!!!
[ MAD-MAX @ 24.05.2002. 00:13 ] @
Ha. Dragi neces verovati ali sam taj isti, identican, kod nasao, mislim iz BCB-a u Help Win SDK i pogodi sta: NECE.

Thanks anyway. :)

A inace jel moze neki primer za "fprintf"
[ Ivan Tanasic @ 24.05.2002. 20:15 ] @
Pa vidi, fprintf je isto sto i printf samo sto mu kao argument jos turis i stdprt da bi on to sto treba poslo na printer a ne na stdout (ekran).

Za vise informacija http://www.cplusplus.com/ref/cstdio/fprintf.html

Pozdrav, autoexes