Sziasztok. Bár több kisebb progit írogattam már C/C++ -ban, de most lenne az első, amihez grafikus felületet is mesterkednék. Ez nem egyszerű nekem, mert még nem találtam erről részletes magyar leírást.
Tehát, egy nagyon egyszerű(nek tűnő...) progi kéne, amit váznak használnék, mintegy kiindulásnak. A következőt kéne tudnia:
Elindítom, erre megjelenít rögvest egy ablakot, lehetőleg fullscreenben rögtön, ha ez nem lehet akkor valami fixen beírt x-y méretűt (pixelben értve). Az ablak azt tudja, hogy átméretezhető legyen, maximalizálható és bezárható. (Tálcára tevéssel nem kell foglalkozni). Az ablak fejlécére megadható legyen valami szöveg.
A progi ha véget ér, magától zárja be az ablakot.
A progiban kéne egy "kiir" rutin (na ez a legfontosabb...) ami annyit tesz hogy ha meghívják (program indulásakor természetesen meg kell hívni) akkor megtölti "tartalommal" az ablakot. Ez úgy menne hogy van egy
unsigned char *M;
tömb, (tudom, ez csak a mutatója...) és ebben egymás után bájt-tripletek vannak, amik sorra R,G,B színösszetevőket tartalmaznak. Ez az M tömb úgy értelmezendő, mint egy 1024×768-as pontmátrix, mindegyik ponthoz egy ilyen r-g-b triplet tartozik. No és a "kiir" rutin csak annyit tenne, hogy ezen M tömbből kirajzol annyi ilyen pontot a megfelelő színnel az ablakba, amennyi abba belefér. (Tehát az M tömb "balfelső negyedét" rajzolja ki mindig az ablakba, annyit, amennyi odafér, mintha egy TrueColor kép lenne). Ha az ablakot átméretezi a felhasználó, természetesen nő vagy csökken a megmutatott terület nagysága.
Kéne még egy "beolvas" függvény is, ami mindig meghívódna ha valami billentyűt lenyom a kedves felhasználó, s ennek kódját valami változóban e függvény felhasználhatná. Egérkezelés egyelőre hanyagolható. (Tulajdonképpen az ablak átméretezése is ha nagyon bonyolult, feltéve hogy fullscreen-ben tud indulni).
Ehhez már csak annyi kéne, hogy a "kiir" rutint be lehessen állítani úgy, hogy magától rendszeresen végrehajtódjon, másodpercenként Y alkalommal. Y valami extern változó lenne, célszerűen char típusú, mert biztos hogy Y<100 azaz beleférne.
Maga a tulajdonképpeni program e kiegészítő rutinokhoz csak annyiból kell álljon, hogy
int ezabelseje(void) {;}
hogy tudjam, hogy ide kell elhelyeznem a fő dolgokat amik a program lényegét alkotják majd.
Volna valaki olyan kedves hogy ezt megírja nekem, hadd tanuljak belőle, vagy ez túl nagy kérés?
Ó igen, és az is okvetlenül kéne, hogy milyen pontos paranccsal fordítsam le ennek a forrását, mert gondolom kell majd hozzá valami olyan lib hogy GTK, Qt vagy akármi, bár örvendenék ha minél kevesebb függősége volna...
Előre is köszi!