[ escape:: @ 12.05.2004. 08:24 ] @
| Radim u WinXP-u a testiram i u Win98.
Imam problem sa printanjem kada su uključeni bold i italic, onda se tekst koji ima ove opcije ne ispisuje.Kada ove opcije zakomentiram onda radi OK,ali nemam opcije(:
Isto tako preview mi puca pod Win98???
Hackeri molim Vas pomoć!Evo kako izgleda funkcija:
void CMyView::IspisiText(CDC* pDC, int nX, int nY, const CString& strText,const CString& strFont, int nVelicina, BOOL bBold, BOOL bItalic, BOOL bCentar, CRect rect)
{
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = nVelicina;
if(bItalic)
lf.lfItalic = TRUE;
if(bBold)
lf.lfWeight = FW_BOLD;//podebljava...
::lstrcpy (lf.lfFaceName, _T (strFont));
lf.lfCharSet = EASTEUROPE_CHARSET;
CFont font;
font.CreatePointFontIndirect (&lf);
CFont *pOldFont = pDC->SelectObject(&font);
if(bCentar)
pDC->DrawText(strText, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
else
pDC->TextOut(nX, nY, strText);
pDC->SelectObject(pOldFont);
} |
[ filmil @ 12.05.2004. 08:56 ] @
Citat:
escape:::
::lstrcpy (lf.lfFaceName, _T (strFont));
Glupo pitanje, ali da li si alocirao memoriju za ime fonta u polju lf.lfFaceName? Ako nisi, onda gađaš po memoriji.
f
[ escape:: @ 12.05.2004. 09:25 ] @
Svaka čast na odgovoru ali kako da to napravim?...i molim te ako može bez arogancije
P.S.
U MSDN-u piše da se ne smije unositi više od 32 karaktera,predpostavljam da automatski alocira memoriju!?
jesi li ovako mislio:
memcpy(lf.lfFaceName, strFont, sizeof(strFont));
pa opet kakve to ima veze sa bold i italic?
[ escape:: @ 12.05.2004. 11:43 ] @
Imam dvije funkcije.
Kada zakomentiram u funkciji IspisiText italic i bold, kvadrati kolona se ispisuju savršeno...ali kad ukljucim bold i italic kvadrati se ne ispisuju,samo ponekad prvi!?
Visina i sirina slova nikad ne prelaze velicinu kvadratica a i da prelaze nema veze jer bi se trebali ispisati preko njega...
Kako ovo rješiti?
//Ovako radi!!!
IspisiText()
{
...
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = nVelicina;
//if(bItalic)
//lf.lfItalic = TRUE;
//if(bBold)
//lf.lfWeight = FW_BOLD;//podebljava...
memcpy(lf.lfFaceName, strFont, sizeof(strFont));
::lstrcpy (lf.lfFaceName, _T (strFont));
lf.lfCharSet = EASTEUROPE_CHARSET;
...
}
///////////////// ISPIS KOLONA ///////////////////////////
void CMyView::IspisiKolone(CDC* pDC, int nX, int nY)
{
CPen pen(NULL, 1, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&pen);
int tmpX = nX;
//ISPIS KOLONA
m_rectKolona1.SetRect(nX+5, nY, nX+50, nY+25);
pDC->Rectangle(m_rectKolona1);
IspisiText(pDC,tmpX, nY, "Br.", "Times New Roman", 110, TRUE, FALSE, TRUE, m_rectKolona1);
m_rectKolona2.SetRect(nX+50,nY,nX+200,nY+25);
pDC->Rectangle(m_rectKolona2);
IspisiText(pDC,tmpX, nY, "Jmbg", "Times New Roman", 110, TRUE, FALSE, TRUE, m_rectKolona2);
m_rectKolona3.SetRect(nX+200,nY,nX+500,nY+25);
pDC->Rectangle(m_rectKolona3);
IspisiText(pDC,tmpX, nY, "Ime", "Times New Roman", 110, TRUE, FALSE, TRUE, m_rectKolona3);
m_rectKolona4.SetRect(nX+500,nY,nX+700,nY+25);
pDC->Rectangle(m_rectKolona4);
IspisiText(pDC,tmpX, nY, "Prezime", "Times New Roman", 110, TRUE, FALSE, TRUE, m_rectKolona4);
m_rectKolona5.SetRect(nX+700,nY,nX+990,nY+25);
pDC->Rectangle(m_rectKolona5);
IspisiText(pDC,tmpX, nY, "Godina rođenja", "Times New Roman", 110, TRUE, FALSE, TRUE, m_rectKolona5);
pDC->SelectObject(pOldPen);
}
//////////////////// ISPISI TEKST /////////////////
//Kad uklucim bold i italic ne crta kvadratice...
void CMyView::IspisiText(CDC* pDC, int nX, int nY, const CString& strText,const CString& strFont, int nVelicina, BOOL bBold, BOOL bItalic, BOOL bCentar, CRect rect)
{
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = nVelicina;
if(bItalic)
lf.lfItalic = TRUE;
if(bBold)
lf.lfWeight = FW_BOLD;//podebljava...
memcpy(lf.lfFaceName, strFont, sizeof(strFont));
::lstrcpy (lf.lfFaceName, _T (strFont));
lf.lfCharSet = EASTEUROPE_CHARSET;
CFont font;
font.CreatePointFontIndirect (&lf);
CFont *pOldFont = pDC->SelectObject(&font);
if(bCentar)
pDC->DrawText(strText, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
else
pDC->TextOut(nX, nY, strText);
pDC->SelectObject(pOldFont);
}
[ escape:: @ 12.05.2004. 12:51 ] @
Evo, izgleda da sam nešto skužio.
U Win 98 mi radi bez greške ali u XP-u...ali logo-bitmapu mi štampa jadno...
U XP-u mi je bitmapa-logo savršena ali problem je sa crtanjem pDC->Rectangle(...)
Evo kako izgleda preview:
LISTA ČLANOVA KLUBA
---------------------------------------------------------
br. jmbg ime prezime
---------------------------------------------------------
1. 32323233334 Ivo Ivić
Kada stavim da je veličina fonta za naziv dokumenta (LISTA ČLANOVA KLUBA)preko 150 stvar ne štima, dolje ne crta pDC->Rectangle(...) po kolonama.
Zašto veličina fonta utječe na pDC->Rectangle(...) u kolonama?
Kako da mi bitmapa-logo bude ok, u oba OS-a?
Koristim nezavisno učitavanje DIB bitmape!
////////////////////////////////////////////////////////
Zašto isti kod radi u Win98 a u XP-u ne i obratno?
////////////////////////////////////////////////////////
[ escape:: @ 14.05.2004. 14:56 ] @
Evo..namučio sam se ali sam otkrio u ćemu je stvar...
Kod je u redu ali kad neke redke stavim kao italic onda ne ispisuje tekst u kolonama.Nemam pojma zašto...sve ostalo je dobro u XP-u.
Ostaje još problem sa logo-bitmapom koja se lijepo printa u XP-u ali u Win98 ne...zašto?
U Win98 SE nemam uopće problema sa ispisom teksta čak i kad su oni famozni reci italic!!!!
[ escape:: @ 19.05.2004. 09:17 ] @
Testirao sam printanje na Win98SE, Win2000, WinXP i samo u WinXP-u (na kojem radim) ne printa kako treba ako stavim tekst italic!Printer je isti...
Nešto ne štima sa XP-om ili driverom koji je instaliran na njemu!?
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.