[ Nedeljko @ 20.07.2010. 13:00 ] @
Odlučio sam da koristim CFreeMenu klasu

Ne kapiram koja je suštinska razlika između ova dva projekta, tj. zašto jedan puca u dibag režimu, a drugi ne.
[ itf @ 20.07.2010. 13:11 ] @
Šteta što ne koristiš C++ Builder. Izbor menija je jako velik. Npr.:






[ Nedeljko @ 20.07.2010. 13:17 ] @
Moram da koristim VC++ MFC. Lepote BCB-a su mi inače poznate, ali o izboru alata ne odlučujema ja.
[ deerbeer @ 20.07.2010. 13:18 ] @
Ako ti puca u debug-u onda je vrlo verovatno da je neki ASSERT ..
Valjda dobijes neki info kad pukne (debug window) itd ..

Ako vec hoces gotovo resenje , mozes pogledati novi BCG pack kontrola u VS2010 .
[ Nedeljko @ 20.07.2010. 13:34 ] @
Puca pri poyivu funkcije GetMenuItemCount, u metodi DrawMenu klase CFreeMenu.
[ deerbeer @ 20.07.2010. 13:51 ] @
Onda moras imati neki meni koji se otvara na ovaj popup .


[ Nedeljko @ 20.07.2010. 14:08 ] @
Pa, zar ne bi funkcija jednostavno trebala da vrati nulu?

Kako to onda radi u onom drugom projektu?
[ deerbeer @ 20.07.2010. 14:18 ] @
Citat:

Pa, zar ne bi funkcija jednostavno trebala da vrati nulu?

Assert nije isto sto i runtime-error .
Assert te samo upozorava u debug modu na neku mogucu gresku .
Klikom na continue se nastavlja izvrsnenje programa .
U releasu rezimu toga nema

Citat:

Kako to onda radi u onom drugom projektu?

U drugom projektu koliko mi se cini imas submenije ..
[ Nedeljko @ 20.07.2010. 14:25 ] @
Stavio sam meni iz onog projekta koji radi i isto je.
[ Nedeljko @ 20.07.2010. 14:48 ] @
Otkrio sam da je problem u tome što iz nekog razloga taj objekat nije meni, bar ne kreiran.

Takođe, imam masu curenja.
[ Nedeljko @ 20.07.2010. 15:42 ] @
U konstruktoru klase CFreeMenu nalazi se kod

Code:
CMenu *menu = m_Menu->GetSubMenu(i);
    if(menu)
    {
        CRect rect = GetItemRect(m_Menu,i);
        CPoint p;

        if(flags == 1)
        {
            p.x = rect.left;
            p.y = rect.bottom+1;
        }
        else
        {
            p.x = rect.right + 1;
            p.y = rect.top;
        }
        p.Offset(beginP);
                            
        CFreeMenu *submenu = new CFreeMenu(menu,p,ParentWnd,BackGroundColor,EdgeLUColor,EdgeRDColor,TextColor,font,0,this);
        SubMenu.Add(submenu);
    }
    else
            SubMenu.Add(NULL);


Sa druge strane, u dokumentaciji metode

Code:
CMenu* CMenu::GetSubMenu(int nPos)


stoji

Citat:
The CMenu pointer returned should not be stored.


Izgleda da je tu problem - ne treba pamtiti pokazivač na podmeni, nego njegov hendler.

[ Nedeljko @ 20.07.2010. 16:38 ] @
To je bilo u pitanju - kada se klasa CFreeMenu izmeni tako da nema polje

CMenu *m_Menu;

Nego, polje

HMENU hMenu

a da se onda pokazivač na meni određuje na osnovu hendlera, onda radi.
[ deerbeer @ 20.07.2010. 17:41 ] @
@itf
Jel se u BCB-u bira templejt menija ili moze da se kastomizuju boje , bitmape, fontovi .. ?
[ itf @ 20.07.2010. 19:59 ] @
Citat:
deerbeer: @itf
Jel se u BCB-u bira templejt menija ili moze da se kastomizuju boje , bitmape, fontovi .. ?
Možeš izabrati npr. jedan od definiranih stilova (template-a) pa po potrebi ga i izmjeniti (boje, fontove itd.) kroz propertie. Podržani su stilovi svih verzija ms offica u sve tri varijante (plava, siva, zelena) a i zadnja verzija za office 2010.



A postoje i komponente za izradu dosta kompleksnih vrsta menija. Npr.:



Ima i podrška za web menije u desktop aplikacijama:



Izbor je zaista jako velik. Nije ih problem "nabaviti", a nisu ni skupe.
[ Nedeljko @ 20.07.2010. 21:28 ] @
Još samo da ima dokumentaciju ravnu MSDN-u, valjda bio BSB bilo najzastupljenije C++ okruženje za Windows.

No, ja ipak navijam za Qt SDK.
[ itf @ 20.07.2010. 21:33 ] @
Ima cijeli set pdf dokumentacije i primjera za komponente ;)