Gå til innhold

Custom Title bar i win32 API


Anbefalte innlegg

Hei! :)

 

Jeg og en kamerat drivere å programerer noe som skal bli et p2p program.

Hadde vært fett med et annerledes og unikt GUI.

 

Har klart å skrape sammen noe kunnskap om win32 api, synes MFC virker som noe forbanna rot!

Så tar sikte på å skrive GUI`et direkte i win32 apiet.

 

For å få den unike looken trenger vi en egen title bar :)

Noen som har ide til kode eller noen ressurser for å lage en custom title bar i win32 api?

Lenke til kommentar
Videoannonse
Annonse

Dette var ganske vanlig på win95 tiden. Fant ingen linker, men mener det var ganske enkelt å få til ved å painte selv på WM_NCPAINT, og eventuelt bruke WM_NCCALCSIZE hvis man ønsket custom size etc.

 

Vær forberedt på at dette kan virke litt forskjellig på de gamle os versjonen (win95,NT,2000) og XP og ikke minst Vista, så test på de OS dere ønsker å støtte.

 

Her var en fin url.

Endret av OldMan
Lenke til kommentar

Takk for svar!

 

Kunne du hjulpet meg med et lite kode eksempel? :)

WM_NCPAINT skal sendes som en message til hovedprosessen?

Men det må vel være en funksjon som skal definere hva det skal paintes som?! GDI?

 

Den codeproject artikkelen syntes jeg ble så kompleks siden alt var skrevet i en ferdig class allerede

Men kanskje jeg blir nødt å gå igjennom den siden win32 apiet er nokså komplekst :)

Endret av bigbull
Lenke til kommentar
Takk for svar!

 

Kunne du hjulpet meg med et lite kode eksempel? :)

WM_NCPAINT skal sendes som en message til hovedprosessen?

Men det må vel være en funksjon som skal definere hva det skal paintes som?! GDI?

 

Den codeproject artikkelen syntes jeg ble så kompleks siden alt var skrevet i en ferdig class allerede

Men kanskje jeg blir nødt å gå igjennom den siden win32 apiet er nokså komplekst :)

 

Rekker ikke noe ufyllende svar, men følgende kan hjelpe litt:

 

WM_NCPAINT blir som alle andre meldinger sendt til hvert vindu sin msg que, og du takler den på samme måte som alle andre meldinger, i wndproc. Hvis du ser hva som gjøres i CSkinWindow::OnNcPaintA(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) i koden til linken jeg ga så får du en en god ide om hva som må til. Typisk må du painte bakgrund, tittel, icon og eventuelt minimize, maximize og close button.

Noen velger å kalle defWindowProc først slik at windows tegner default windows ting først for så å tegne sin egen implementasjon oppå.

Hvis du ikke overstyrer WM_NCCALCSIZE og git tittelfelt din egen størrelse bruker du typisk GetSystemMetrics og liknende for å spørre os hvor høyt titlebar er osv, da dette jo varierer mellom os versjon og brukeroppsett.

 

WM_NCPAINT

 

gl

Endret av OldMan
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...