[ Nedeljko @ 07.07.2010. 22:37 ] @
Kako u MFC-u promeniti boju manubar-a? Za stavke menija je lako.
[ deerbeer @ 08.07.2010. 12:29 ] @
Probaj to da uradis u MainFrame-u tako sto ces da hendjujes WM_NCPAINT ,
jer menubar tj. onaj ostatak od menija gde nema stavki kako bi ti sve bilo u istoj boji (ako sam te skapirao)
bi trebalo da bude neklijentska povrsina glavnog frejma .
Pogledaj GetMenuBarInfo metodu koja ce ti u strukturi vratiti trenutni RECT od menubar-a,
s tim sto moras da pazis da ne farbas preko title bara , min/maximize dugmica i preko stavki menija .




[ Nedeljko @ 08.07.2010. 12:44 ] @
Hvala, ali na netu je ponuđeno jednostavnije rešenje, koje jednostavno ne radi.

http://www.codeguru.com/forum/showthread.php?threadid=466588

Da li bi neko mogao da napravi projekat u kome ovako nešto radi?
[ deerbeer @ 08.07.2010. 12:51 ] @
Bogami radi resenje i ultra je jednostavno ..
Postavi kod da vidim mozda je neka glupost verovatno ..
[ deerbeer @ 08.07.2010. 13:11 ] @
Verovatno ti je cetkica za farbanje izasla iz opsega ili je lokalna varijabla pa ti ne radi .

Kreiraj je u konstruktoru MainFrame-a :
Code:

CMainFrame::CMainFrame()
{
  // TODO: add member initialization code here
  brush.CreateSolidBrush(RGB(0,0,0)) ; 

}

CMainFrame::~CMainFrame()
{
   brush.DeleteObject();
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    
     if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
    
    MENUINFO MenuInfo = {0};
    MenuInfo.cbSize = sizeof(MenuInfo);
    MenuInfo.hbrBack = brush; 
    MenuInfo.fMask = MIM_BACKGROUND;

    if(IsMenu(lpCreateStruct->hMenu))
    {
        SetMenuInfo(lpCreateStruct->hMenu, &MenuInfo);
    }
}

[ Nedeljko @ 08.07.2010. 13:28 ] @
Pa, evo celog projekta u prilogu.
[ Nedeljko @ 08.07.2010. 13:39 ] @
Okači ceo svoj projekat, pa ću ja da vidim št6a je.
[ deerbeer @ 08.07.2010. 13:41 ] @
Stavio su kreiranje cetkice u destruktor umesto u konstruktor

[ Nedeljko @ 08.07.2010. 13:52 ] @
Vidi, stvarno!

OK, prebacio sam kreiranje u konstruktor i opet isto.

Je l' ti nije problem da okačiš svoj projekat koji radi? Misli, hvala ti za sav trud, ali mislim da bih tako ja brže stigao do rešenja uz manje tvog cimanja.
[ deerbeer @ 08.07.2010. 14:05 ] @
.

Ostale meni stavke se ne vide zbog crne boje, ali posto imas kastom meni sa farbanjem , samo ti ostaje da potrefis istu boju
i videce se ...
[ Nedeljko @ 08.07.2010. 14:21 ] @
OK, hvala ti za sav trud.

Kod mene još uvek ne radi, šaljem i šotku prozora iz tvog projekta, ali šta da radim, ovo više nije do koda. Kod mene je 64-bitni Windows 7 instaliran i nemam pojma zašto ne dozvoljava promenu stila menija, ali šta da se radi.

Hvala još jednom. Ostalo je da mi se Windows opameti, ali za to ne mogu tebe da cimam. Samo bih te zamolio za još jednu sitnicu: Kako da promenim font u menibaru?

[ Nedeljko @ 08.07.2010. 14:26 ] @
Radi kad promenim desktop temu u "Windows Classic".
[ Nedeljko @ 08.07.2010. 14:28 ] @
I još samo nešto - boja slova.

Znači, ostalo je:

1. Promena fonta,
2. Boja slova,
3. Pivo da te častim ako si iz Beograda.
[ deerbeer @ 08.07.2010. 14:32 ] @
U pravi si , sad sam i ja promenio u aero temu (bio mi je classic ) i isto kao kod tebe nece da farba
Hebeni aero ..
Citat:

Kako da promenim font u menibaru?

Koliko sam te skapirao ti vec imas neki ownerdraw meni koji sam farbas u rutinama drawItem & measureitem ?
To je jedini nacin da menjas izgled menija (boja , font itd ..) Ajd postavi neko parce koda da pogledam ...

[ Nedeljko @ 08.07.2010. 14:40 ] @
OK, našao sam rešenje svih problema ovde. Ostalam je samo ova tačka

3. Pivo da te častim ako si iz Beograda.
[ deerbeer @ 08.07.2010. 14:40 ] @
Setiih se da imam neku skin biblioteku koju sam odavno pravio ...
U zipu je klasa za skinovanje menija (boja pozadine ,slova, menjanje fonta , postavljanje ikonice u meni stavku itd ..)
pa pogledaj sta sve tu ima i naravno pitaj sta ti nije jasno ..
[ Nedeljko @ 08.07.2010. 14:51 ] @
Imam sve ostalo što mi treba za skinovanje. Hvala još jednom.

P.S.

Koliko košta komercijalna upotreba ove tvoje biblioteke?
[ deerbeer @ 08.07.2010. 14:59 ] @
Citat:

Koliko košta komercijalna upotreba ove tvoje biblioteke?

Ma ne kosta nista , to sam se ja zanimao u slobodno vreme , te stoga nije bas do kraja testirana .
Ali sam je par puta kasnije koristio u komercijalnim programima .
Ustvari tu samo kosta externa biblioteka za citanje fotografija svih formata
za koju je firma platila licencu , s tim sto moze da radi i bez nje ali onda samo sa obicnim win bitmapama.




[Ovu poruku je menjao deerbeer dana 08.07.2010. u 16:12 GMT+1]
[ Nedeljko @ 08.07.2010. 16:34 ] @
Nego, ne reče mi ništa oko tačke 3.
[ Nedeljko @ 09.07.2010. 11:29 ] @
U ovoj tvojoj skin biblioteci fali fajl SkinTypes.h.

Pozdrav
[ Nedeljko @ 09.07.2010. 11:43 ] @
Napravio sam ga ovako

Code:
#pragma once

enum ColorPurporse
{
    CLR_TEXT,
    CLR_INTERIOR,
    CLR_HILITE,
    CLR_FRAME,
    CLR_TEXT_DISABLED,
    CLR_DISABLED
};

struct COLORINDEX
{
    ColorPurporse nID;
    COLORREF clr;
};


i radi.
[ deerbeer @ 09.07.2010. 12:07 ] @
Da, to je to sto se nalazi u skintype.h ,zaboravio sam da ga uploadujem .
Ako te interesuje da se zezas sa skinovima ,evo cele biblioteke u spajalici .

Externu biblioteku za otvaranje jpg,png, i ostalih korisnih rutina imas na :
http://www.smalleranimals.com/isource.htm

Biblioteka podrzava i semitransparente prozore ,
s tim sto si ogranicen da u dijalogu ne mozes koristiti standarndne kontrole (listbox,combo, itd) vec samo static i "bitmap-button" kontrole .
sto je ustvari ogranicenje windowsa a ne biblioteke .

[ Nedeljko @ 09.07.2010. 12:56 ] @
Hvala.

Još jedna stvar me buni. Kada u metodi InitInstance napišem

Code:
static CMenu menu;
menu.LoadMenuW(IDR_MENU1);
pMainFrame->SetMenu(&menu)


onda je sve OK, ali kada napišem CSkinMenu umesto CMenu, onda neće (ostane prethodni meni, ne dođe do zamene) iako je CSkinMenu javno izvedena iz CMenu.
[ deerbeer @ 09.07.2010. 13:19 ] @
U konstruktoru CSkinMenu se kreira Popup meni (CreatePopMenu f-ja) ...
zameni ga sa CreateMenu ili napravi overload konstruktora ili mozda cak da razdvojis klase CSkinPopupMenu, CSkinMenu npr .

[ Nedeljko @ 09.07.2010. 13:27 ] @
Hvala, već sam video i rešio problem ovako:

Code:
static CSkinMenu m_menu;
m_menu.DestroyMenu();
m_menu.CreateMenu();
COLORINDEX ind[6] = {
        {CLR_TEXT, RGB(0,0,0)},
        {CLR_INTERIOR, RGB(128,0,0)},
        {CLR_FRAME, RGB(0,255,0)},
        {CLR_TEXT_DISABLED, RGB(0,255,255)},
        {CLR_HILITE, RGB(255,255,255)},
        {CLR_DISABLED, RGB(255,255,0)}
                          };
m_menu.AppendMenuItem2(32000, 0, &font, CString(L"Hello"), ind,6);
m_menu.AppendMenuItem2(32001, 0, &font, CString(L"World"), ind,6);
pMainFrame->SetMenu(&m_menu);


Car si!
[ Nedeljko @ 09.07.2010. 14:03 ] @
Izvini, je l' ja negde ovde grešim ili je u pitanju bag biblioteke?

Code:
    static CSkinMenu mainMenu;
    mainMenu.DestroyMenu();
    mainMenu.CreateMenu();
    COLORINDEX ind[6] = {
        {CLR_TEXT, RGB(0,0,0)},
        {CLR_INTERIOR, RGB(128,0,0)},
        {CLR_FRAME, RGB(0,255,0)},
        {CLR_TEXT_DISABLED, RGB(0,255,255)},
        {CLR_HILITE, RGB(255,255,255)},
        {CLR_DISABLED, RGB(255,255,0)}
                          };
    static CSkinMenu helloMenu;
    helloMenu.AppendMenuItem2(32000, 0, &font, L"First", ind, 6);
    helloMenu.AppendMenuItem2(32001, 0, &font, L"Second", ind, 6);
    helloMenu.AppendMenuItem2(32002, 0, &font, L"Third", ind, 6);
    static CSkinMenu worldMenu;
    worldMenu.AppendMenuItem2(32003, 0, &font, L"1", ind, 6);
    worldMenu.AppendMenuItem2(32004, 0, &font, L"2", ind, 6);
    worldMenu.AppendMenuItem2(32005, 0, &font, L"3", ind, 6);
    mainMenu.AppendPopUpMenu(32006, &helloMenu, 0, &font, CString(L"Hello"), ind, 6);
    mainMenu.AppendPopUpMenu(32007, &worldMenu, 0, &font, CString(L"World"), ind, 6);
    pMainFrame->SetMenu(&mainMenu);


Dobijam ovakav izgled:



Vidi se po jedno slovo.
[ deerbeer @ 09.07.2010. 14:26 ] @
Moguce , jer koliko se secam ova klasa bila je namenjena samo za popup meni .(na desni klik)
Mislim da uz neke male modifikacije moze da radi i kao obican meni .

[ deerbeer @ 09.07.2010. 14:45 ] @
Izgleda da nije bug u biblioteci nego windows feature
A evo i zasto :
http://support.microsoft.com/default.aspx?scid=kb;en-us;143209
[ Nedeljko @ 09.07.2010. 16:40 ] @
Ima li neka slična fora za farbanje menubar-a, tipa ownerdraw? Onaj trik bi bio dobar da radi sa aerom.
[ Nedeljko @ 13.07.2010. 10:53 ] @
Rešio sam sve. Ostala je samo jedna sitnica: Kako da povećam visinu menibara, tj. da je prilagodim veličini fonta? Posle ovoga aploudujem kompletan kod koji ilustruje i kako se rešava pod aerom ono što nije htelo da radi pod njim.