einaros Skrevet 3. mai 2006 Skrevet 3. mai 2006 Jeg var aldri videre glad i MFC, da det var alt for tunggrodd. Gikk heller aldri inn på å bruke andre løsninger, som WTL, Qt, wxWidgets eller lignende. Gjennom årene har jeg brukt en kombinasjon av egenskrevede klassesett og rent win32-api (sistnevnte er så absolutt ingen fryd, hva effektiv programmering angår). Nå har jeg tråkket litt til på en ny generasjon av guiklassene mine, hvor jeg har revurdert flere av aspektene fra tidligere versjoner, samt hentet litt inspirasjon fra f.eks. C#/.NET og lignende. Til tross for at jeg følger prinsippet med å legge til features når jeg trenger det, så ser jeg verdien i å ha ekstrahjelp. Så, i den anledning; er det noen som har lyst til å ta del i utviklingen? Jeg ser helst at den/de som deltar har gode designkunnskaper, og kjenner de viktigste prinsipper innen OO, i tillegg til å kunne skrive kreativ C++-kode. Om ikke annet blir det en mulighet til å diskutere designfundamenter med andre
Dead_Rabbit Skrevet 3. mai 2006 Skrevet 3. mai 2006 Dette er rett og slett en wrapper rundt Win32 GUI bibloteket?
einaros Skrevet 3. mai 2006 Forfatter Skrevet 3. mai 2006 Yes. Følger i samme sjanger som Qt, wxWidgets, MFC and so forth (i motsetning til de to første har jeg ikke brydd meg om plattformuavhengighet). Dytter gjerne ut code samples, men ville helst ha litt tilbakemelding her først, for å se om det i det heletatt finnes interesserte sjeler.
kjetil7 Skrevet 3. mai 2006 Skrevet 3. mai 2006 Selv om det høres interessant ut har jeg desverre ikke tid til å bli med på et slikt prosjekt. Men jeg er litt nysgjerrig på hvor langt du har kommet i arbeidet. Siden du allerede har brukt komponentene dine vil jeg anta at du har grunnelementene på plass, som f.eks. messagehåndteringa? Hvordan har du løst den? Grunnen til at jeg lurer er at jeg også lagde noen prototyper til eget GUI-bibliotek for noen år siden, men det ble aldri noe mer av da jeg startet i jobb. Men jeg husker at det jeg grublet mest på og brukte mye tid på var hvordan oversette meldingene fra operativsystemet til et objektorientert miljø på en mest mulig effektiv måte.
einaros Skrevet 3. mai 2006 Forfatter Skrevet 3. mai 2006 (endret) Det hadde nok gjort seg bedre med et diagram for å forklare akkurat hvordan gangen i det er, men ja -- det grunnleggende er på plass. Jeg kan gi et eksempel på life-span for et vindu. Forutsetningen da er at man har opprettet skjelettet til en dialog-klasse, som arver fra CeDialog. I WinMain kan man da gjøre følgende: CSomeDialog myDialog; myDialog.doModal(MAKEINTRESOURCE(IDD_SOMEDIALOG)); Internt i klassesettet konstrueres da et CeWindow-objekt (som CeDialog arver fra). Denne konstrueringen innebærer blant annet å sette opp en thunk (Se Wikipedia) for fremtidige window messages (heretter WM). Etter at CeDialog+CSomeDialog har blitt konstruert, havner vi i CeDialog::doModal. Der kalles riktig winapi-metode (i denne sammenhengen den modale DialogBoxParam) for konstruksjon av dialogen. Dette gjøres i praksis ikke direkte mot winapiet, men gjennom en singleton factory-klasse. Det er en metode i denne klassen som mottar den første WMen. Når dette skjer, endres windowproc for gjeldende vindu til å peke mot thunken i CeWindow'et som CSomeDialog er en del av, for deretter å sprette videre dit selv. Alle påfølgende meldinger går altså mot CeWindow::windowProc, og etter oppslag i et map, ut i virtuelle metoder for håndering av WMen (eller default window proc for aktuelle vindustype, dersom ikke annet overstyrer). Det var i hvertfall det helt elementære. I virkeligheten skjer det litt flere ting, som bygger oppunder en og annen nifty feature Med forbehold om skriblefeil og forvirrende hastverksforklaring Endret 3. mai 2006 av einaros
Dead_Rabbit Skrevet 3. mai 2006 Skrevet 3. mai 2006 Syns det høres interessant ut, men litt uaktuelt når det er plattformavhengig. Kjører Linux her. Har du forresten sett på GTKmm? Veldig fin wrapper rundt GTK for C++. Kanskje du kunne fått noen idèer derifra. (?)
einaros Skrevet 3. mai 2006 Forfatter Skrevet 3. mai 2006 Grunnen til at jeg har unngått å være plattformuavhengig, er først og fremst arbeidsmengde. Det ville tatt meg enormt mye lengre tid å tilpasse det til flere plattformer -- ikke minst siden Mircosofts kompilator inneholder endel "quirks". Overlater den typen greier til Qt Nå er jo f.eks. wxWidgets også plattformuavhengig, og etter hva jeg hører, temmelig greit å jobbe i. Jeg føler allikevel at litt av bruksgleden er utformingen av biblioteket som ligger bakom.
Dead_Rabbit Skrevet 3. mai 2006 Skrevet 3. mai 2006 Æsj, ja. Har ikke skrevet noe ordenlig GUI-biblotek selv, men kan tenke meg at det er et lite helvete å gjøre alt plattformuavhengig.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå