[ 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 |