NWinApi 0.2

Sem vkládejte editovatelné kusy kódu a tutoriály.
Post Reply
Nichar
Redaktor
Posts: 435
Joined: August 6, 2011, 1:51 pm
Facebook: http://www.facebook.com/nikolas.charalambidis
Location: Praha

NWinApi 0.2

Post by Nichar »

Hoj,
představuji vám svou .gex, která do GM přidá vzhled Win aplikací. Sice je ještě ve fázi vývoje, i přesto nabízí spoustu prvků. Některé z nich se také objeví v mé hře pro Letní soutěž VCH 2012!

Download
MIRROR 1
MIRROR 2

Screen
http://www.freeimagehosting.net/zy9gi

Jak to funguje?
Napřed musíte rozbalit .zip soubor a nainstalovat GEX knihovnu (jednoduché do 10 sec.)
  • GM -> Resources -> Select Extension Packages -> Vyberete NWinApi 0.2
Pak se musí vše nastavit:

Code: Select all

nwa_define("nwa/data/"); // Deklarace všeho potřebného
nwa_set_background(); // Nastavení barvy pozadí
A potom se vytvoří vložením jednoho řádku kódu do create:

Code: Select all

a=nwa_create_button(x,y,width,str,enable); // Vytvoří tlačítko
b=nwa_create_checkbox(x,y,text,check,enable); // Vytvoří checkbox (zaškrtávácí pole)
c=nwa_create_progressbar(x,y,width,value); // Vytvoří progressbar (ukazatel postupu)
d=nwa_create_radio(x,y,text,check,enable); // Vytvoří radiobutton (zaškrtávací pole)
e=nwa_create_textbox(x,y,width,text,limit,password,enable); // Vytvoří textové pole
f=nwa_create_trackbar(x,y,width,value,lines,enable); // Vytvoří trackbar
  • x,y - souřadnice prvku
  • width - šířka
  • str, text - popisný text
  • limit - "0" pro neomezenou délku textu,"1" pro délku až ke konci (jen u textbox)
  • check - 0,1 zaškrtnutí
  • password - skrytí textu (jen u textbox)
  • lines - pomocné čárky u trackbaru (počet)
  • enable - vždy je prvek viditelný, 0,1 určuje, jestli je aktivní
Po vytvoření prvku jedním řádkem kódu se stává funkčním. Můžete na něj dále klikat, tahat apod., avšak se nic nestane. Do stepu se pak přidá jiný kód, který zaručí, že se něco stane:

Code: Select all

ww=nwa_get_clicked(id); // Vrací 1 po klinkutí na položku
qq=nwa_get_checked(id); // Vrací 1, jestliže je položka zaškrtnutá
xx=nwa_get_text(id); // vrací text položky
yy=nwa_get_value(id); // vrací hodnotu položky (progressbar)
zz=nwa_get_width(id); // vrací šířku položky
Za takto získanými hodnotami můžeme dále pracovat:

Code: Select all

if nwa_get_clicked(but_1) {game_end();} // Jestliže se klikne na čudlík but_1, vypne se program
Obdobným způsobem můžeme nastavovat vlastnosti prvků za chodu:

Code: Select all

nwa_set_position(id,x,y);
nwa_set_text(id,str);
nwa_set_enable(id,enable);
nwa_set_checked(id,check);
nwa_set_value(id,value);
nwa_set_width(id,width);
Vrátím se k tomu ID. Každému prvku je přiděleno ID, se kterým můžete pracovat podobně, jako je to u particles nebo surfaces:

Code: Select all

CUDLIK=nwa_create_button(...)
nwa_set_text(CUDLIK,"This is button");
Doufám, že se vám bude líbit a že k něčemu bude. Snad je vše dobře popsané a jednoduše srozumitelné. Není to složité jak vypadá, naopak! :)
The Scarecrow - 2. místo v prestižní soutěži, online highscore!
Symphony of good and evil: Finding the end - Soutěžní kousek (3. místo)
NWinAPI 0.2.gex | nMath.dll | nBeep.dll - Moje DLL a GEX
Vektorová galerie - Začátek mých vektorů
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

Re: NWinApi 0.2

Post by hráč »

:D hezké něco jak winApi klasické jenom že tohle je podle mě všechny ty prvky jsou naprogramovány v gm že :D ale jo dobrá práce ;) taky mám něco podobného :D ale umě je i select box :)
P.S: mohl bys k inputu ještě přidat možnost kláves CTRL + V a CTRL + X ;)
Neposedný liškovlk!
Image
Pelpet
Posts: 734
Joined: August 6, 2011, 12:03 am

Re: NWinApi 0.2

Post by Pelpet »

Taky mám něco podobného. Můj textbox umí nejen ctrl+V a +X a +C, ale i ctrl+Z, ctrl+Y a ctrl+A. Co jsem u vás ale neviděl jsou okna. Moje api má okna, co se řadí přes sebe, umí i dialogové okna. Když se vyhodí dialog, všechno zamrzne, dokud dialog nezmizí. ;) Mno a přidat cokoliv jen tak do prostoru taky není problém.

NicharCZ: Pěkné, taky jsem to řešil přes GM, ale asi jsou přecijen lepší ty api, které používají přímo .NET a ne (na tyto věci) pomalý GM engine. Já si s tím hrál do úplna, takže třeba při najetí na tlačítko se to prolne, neblikne to hned atd. Jestli chceš, můžu poslat funkční ukázku. ;) Co bych vytknul je textbox. Nejde v něm vybírat text, a ke všemu se nedá posouvat šipkama, ani myší. Jinak proč radio button funguje jako checkbox? No a radio button a checkbox by mohl reagovat, i když klikám na text. :P Jinak ale nemám co dodat.
Attachments
Zatím mám (a zatím mi stačí): checkbox, radio button, textbox, button, progressbar, slider, select box, tab view, label a color-picker.
Zatím mám (a zatím mi stačí): checkbox, radio button, textbox, button, progressbar, slider, select box, tab view, label a color-picker.
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

Re: NWinApi 0.2

Post by hráč »

Tak taky přihodím obrázek no :)
odkaz
A dialogová okna se tvořily takto třeba:

Code: Select all

win=window_form_create("Upravit øetìzec",320,210,0,"","");
window_form_add_text(win,3,3,"Název hodnoty","");
window_form_add_textbox(win,3,30,"nazev",
   "width:300;value:"+string(vh[0])+";disabled:1");
window_form_add_text(win,3,60,"Ùdaj hodnoty","");
window_form_add_textbox(win,3,90,"udaj","width:300;value:"+string(polo));
window_form_add_check(win,3,120,"type","real","Reálné  èíslo","checked");
window_form_add_button(win,30,150,"buttonOK","OK","","uloz=1;");
window_form_add_button(win,180,150,"buttonStorno","Storno"
  ,"","with("+string(id)+"){winID=-1;};instance_destroy();");
winID=window_form_draw(win);
winID.button_buttonOK_click=0; 
a nebo klasické info okno

Code: Select all

alert("Název","text");
Ovšem já tam mám další kupu funkcí ;) to moje už je jako OS akorát že game maker na tohle není :D
A samozřejmě se okna dají roztahovat ale dá se to vypnout tak jako že se dá nastavit i minimální velikost a dá se nastavit průhlednost okna...

Ale umě to žere všechno trochu víc já to totiž všechno vykresluji a nepoužívám k tomu sprity :D
Neposedný liškovlk!
Image
Post Reply