Detta är headerfiler för att göra program för Windows och några är för andra saker. Att programmera i Windows brukar vara väldigt svårt, men här har jag gjort det så att det ska vara enkelt att göra det. Samtliga headerfiler är skrivna i C så det behövs inga kunskaper i OOP (objektorienterad programmering). Samtidigt blir de färdiga programmen väldigt små (20 - 50 KB). Vill du göra små program och använder C++ så är mittt tips att du undviker <iostream.h> och dess släktingar. Om de används blir programmet över 150 KB, även om det strippas. Använd <stdio.h> istället.
Det enklaste sättet att öppna ett (tomt) fönster:
#include "stdwin.h"
witem win;
int c_main(int argc, char **argv) {
win = c_window(NULL, -32767, 0, 300, 300, "Ett tomt fönster");
return c_loop();
}
Det gör att ett fönster öppnas. Fönstret kommer att centreras på skärmen (-32767) och får en bredd och höjd på 300 pixels. Funktionen c_loop() innehåller meddelandeloopen och all callback-hantering så den delen behöver du inte bry dig om att skriva till skillnad från t.ex MFC och "ren" WinAPI. Den är fullt jämförbar med gtk_main(), som finns i GTK. Stdwin.h innehåller alla de vanliga kontrollerna som t.ex button, editbox, listbox och menyer. En dokumentation på den filen medföljer zip-filen som kan hämtas längst ner på denna sida.
Jag har även gjort en headerfil för flytande verktygsrader och den är väldigt enkel att använda om man jämför med andra varianter. Varje rad kan ligga inne i fönstret och flyta utanför utom den fasta ytan som alltid är inne i fönstret. Här följer ett exempel på hur det kan se ut:

Komplett kod för exemplet:
#include "floatbar.h"
witem win, float1, float2;
floatbar *f;
int c_main(int argc, char **argv) {
win = c_window(NULL, -32767, 0, 300, 200, "Flytande verktyg");
f = c_floatbar(win, 1); // 1 = resizar fönstret när en rad dras loss.
// Bredden på raden gäller om den flyter, annars följer den fönstrets storlek.
float1 = floatbar_add(f, 0, 0, 200, 30);
float2 = floatbar_add(f, 0, 0, 250, 30);
c_label(float1, 3, 5, 200, 20, "Label i floatbar nr 1");
c_editline(float2, 3, 3, 220, 24, "Editruta i floatbar nr 2");
c_editbox(f->fixed, 5, 5, 280, 150, "Textruta i fixed");
return c_loop();
}
Händelsehanteringen har jag nu gjort så att det liknar mer det i GTK, dvs man kan ange en parameter som ges till callbackfunktionen. Parametern är inte obligatorisk och kan ignoreras genom att utelämna c_eventdata(). Den är då satt till NULL. Ett exempel:
#include "stdwin.h"
witem win, lb, bt1, bt2, bt3;
void klickad(void *data) {
label_text(lb, (char *)data);
}
int c_main(int argc, char **argv) {
win = c_window(NULL, -32767, 0, 300, 200, "Func-parametrar");
bt1 = c_button(win, 10, 10, 100, 24, "Nr 1", klickad);
c_eventdata(bt1, "Nr 1 klickad!");
bt2 = c_button(win, 10, 40, 100, 24, "Nr 2", klickad);
c_eventdata(bt2, "Nr 2 klickad!");
bt3 = c_button(win, 10, 70, 100, 24, "Nr 3", klickad);
c_eventdata(bt3, "Nr 3 klickad!");
lb = c_label(win, 10, 100, 100, 20, "");
return c_loop();
}
De övriga headerfilerna är:
| Bitmap.h | Hanterar ritning på bitmapytor (linjer, cirklar, text, etc). |
| Clist.h | Innehåller en lista som är indelad i kolumner. Exakt hur den fungerar beror på versionen av filen comctl32.dll, men för de som har IE 3.0 eller senare ska det inte vara några problem. |
| Dialog.h | Standard dialogrutor som fildialog och fontdialog. |
| Polygons.h | Ritar 2D-polygoner och bezierkurvor. Har även stöd för texturering. En del av koden är från Allegro och information om detta finns i c-filen. |
| Events.h | Händelsehantering (timer och tangentbord). |
| Extcomp.h | Extra "kontroller" (färgad label och button med bitmap). |
| Sbox.h | Innehåller en ruta där ytan är scrollbar. |
| Bmp.h | Öppnar och sparar bilder i bmp-format. Kan öppna bilder i 4, 8 och 24 bpp. Sparar endast i 24 bpp. |
| Cctrl.h | Innehåller de kontroller som hör ihop med commctrl.dll, dvs ListView och TabCtrl. Obs! Om Win 95A utan Internet Explorer används så fungerar inte vissa funktioner. Detta kan enkelt åtgärdas genom att installera IE (minst version 3.0), som då uppgraderar dll-filen. |
| Treelist.h | Trädlista. Samma typ av träd som den i Explorer. Naturligtvis går det att lägga egna bilder i den (i måtten 16 * 16 pixels). |
| wire.h | Förenklar trådhantering. De övriga headerfilerna bör vara ganska trådsäkra. |
En del exempel och en lista på funktionerna (ej komplett)
medföljer också!
Det roliga med dessa headerfiler är att de inte är beroende av
några andra DLL-filer än de som finns i en standardinstallation
av Windows. Filerna är också anpassade så att de fungerar med
mitt make-verktyg. Det är dock inget krav att använda den för att
kunna kompilera filerna.
| wheads.zip | Headerfiler med exempel. Zippad, 58173 byte. Inga exe-filer medföljer. |