[ milas @ 02.07.2004. 15:17 ] @
Imam dva problema:

1. Kako da u CStatic kontroli postignem transparentnu pozadinu, ako na njoj iscrtavam neku slicicu (WinXP)?

2. Ako imam pokazivacku promenljivu int **map; u klasi CDialog, i u InitDialog je inicijalizujem:
for(int i=0;i<VELICINA_MAPE;i++)
{
map = new int[VELICINA_MAPE];
for(int j=0;j<VELICINA_MAPE;j++)
map[j] = neki_broj;
}
i nista ne radim sa njom, kada se program zavrsava dobijem poruku Memory leaks, i tu jos neke silne redove brojeva, i na kraju pise object dumped?!
[ filmil @ 02.07.2004. 15:25 ] @
2. map[ i ] = new int[VELICINA_MAPE];

Takođe sama promenljiva map (koja je pointer na niz pointera) mora da se alocira sa new, što treba uraditi pre ulaska u spoljašnju petlju.

f


[ milanche @ 02.07.2004. 15:42 ] @
A osim toga, sta si god alocirao sa 'new' treba na kraju da izbrises sa 'delete'. Ako
je u pitanju niz onda se za istu svrhu koristi 'delete []'
[ milas @ 02.07.2004. 16:32 ] @
Izvinjavam se, nisam dobro preneo kod. Evo ovo je tacan kod:

Code:
int **map;
map = new int*[10];
for(int i=0;i<10;i++)
{
    map[i] = new int[10];
    for(int j=0;j<10;j++)
        map[i][j] = neki_broj;
}


a kada ga unistavam, to radim ovako:

Code:
for(int i = 0; i < 10; i++) delete map[i];

delete map; map = 0;


I uvek Visual C javlja sledece:

Detected memory leaks!
Dumping objects ->

Code:
linijedlg.cpp(104) : {68} normal block at 0x00BE5EA8, 404 bytes long.
 Data: <                > 0A 00 00 00 FF FF FF FF FF FF FF FF 00 00 00 00 


i tako jedno desetak ovakvih linija, pa na kraju ispise:
Object dump complete. I to sve kada se izadje iz programa?!

Naravno linija koda 104 je upravo ova gde pravim nove nizove sa new!
[ Dragi Tata @ 02.07.2004. 16:36 ] @
Pa čovek ti je lepo objasnio:

Citat:
milanche: A osim toga, sta si god alocirao sa 'new' treba na kraju da izbrises sa 'delete'. Ako
je u pitanju niz onda se za istu svrhu koristi 'delete []'
[ milas @ 02.07.2004. 19:17 ] @
Hvala vam, to je resilo problem! A da li neko ima odgovor na moje prvo pitanje (sa providnosti kontrola)?
[ milanche @ 02.07.2004. 22:59 ] @
Mogucnosti CStatic-a su vrlo skromne.

Ako hoces to sto si naveo (transparentnost uz slicicu), moraces da kreiras svoju
kontrolu kao public CWnd, pa da se onda poigras sa overridovanjem OnPaint( ) i
ostalih message handler-a.

Pronadji negde na web-u kod za TransparentBLT. Iako postoji takva funkcija u
VisualStudio bibliotekama, radi na razlicitim verzijama Windows-a sa promenljivom
srecom, tako da ces najverovatnije morati da je sam napises.
[ milas @ 03.07.2004. 15:01 ] @
Da, ali ima jedna interesantna stvar sa klasom CPictureEx (autor Oleg Bykov) koja je izvedena iz CStatic, kada u nju ucitam GIF slicicu koja ima na sebi transparente delove, ja mogu da sa funkcijom SetBkColor menjam tu pozadinu, odnosno deo koji je u gif slici providan! Ali problem je sto ne mogu da postignem transparentnost tih delova!?

http://www.codeproject.com/bitmap/pictureex.asp
[ milas @ 03.07.2004. 19:29 ] @
Uspeo sam da resim problem sa funkcijom TransparentBlt. Hvala!