Skocz do zawartości

Rekomendowane odpowiedzi

Tytuł: GMBox

Gatunek: Biblioteka umożliwiająca obsługę paska narzędzi

Opis: Library for Game Maker by Bedi

 

GMBox to biblioteka do Game Makera, umożliwiająca dodanie do okna paska narzędzi.

Dzięki tej bibliotece, użytkownik aplikacji ma dużo łatwiejszy dostęp do aplikacji.

Tworzenie i zarządzanie paskiem narzędzi jest bardzo łatwe, dlatego wszelkie wprowadzanie zmian nie sprawia większych problemów.

Biblioteka umożliwia obsługę zdarzeń, czyli wykonywanie akcji w zależności od wybranego przycisku.

Mała liczba funkcji umożliwia utrzymanie spójności i przejrzystości kodu.

Wszystkie akcje wykonywane są w bibliotece, dlatego oprócz pliku DLL nie potrzeba żadnych innych aplikacji czy bibliotek.

 

Taka krótka notka, jak do jakiegoś super programu =)

 

Autorzy:

- Bedi

 

Szczególne podziękowania dla:

- PsichiX

- Snake

 

Download: Click!

Rozmiar pliku: 127 kb

 

Dokumentacja jest w Game Information, a jeśli chcecie ją w pliku, to: kliknij tutaj

 

Testujcie, oceniajcie ;) Na razie przykład nie jest extra, ale udoskonalę to.

 

Enjoy!

 

 

E: To może dam jakiś przykład, w jaki sposób tego używać (dokładne wyjaśnienie) ;)

 

1. Zamiana procedury

Przed użyciem wszystkich funkcji (w zasadzie tylko przed sprawdzającymi, ale najlepiej dać to od razu po załadowaniu biblioteki) trzeba wywołać funkcję:

Box_TransferProc( window_handle() )

Koniecznością jest wpisanie window_handle(). Jeżeli tego nie umieścimy, to wtedy reszta nie będzie działać (żadne funkcje). Funkcja ta (chyba wiadomo) podmienia procedurę okna, co umożliwia obsługę zdarzeń. Funkcja zwraca ten uchwyt, który podaliśmy w pierwszym arg.

 

2. Tworzenia paska narzędzi

Po załadowaniu biblioteki i zamianie procedury, należy wywołać funkcję:

Box_MenuBar_Create();

Spowoduje to utworzenie pustego paska, na którym możemy umieszczać elementy. Funkcja zwraca uchwyt do menu, dlatego używam tej funkcji w ten sposób:

hMenu = Box_MenuBar_Create();

 

3. Dodawanie popupów (zjeżdżających list)

Po wykonaniu 1 i 2 punktu, jeśli chcemy umieścić przycisk w pasku narzędzi, na którym po kliknięciu wyjeżdża lista, wywołujemy funkcję:

Box_MenuBar_CreatePopup();

Tworzy to listę, i zwraca jej uchwyt. Dlatego:

Przykład przycisku Plik:

hListPlik = Box_MenuBar_CreatePopup();

Po wykonaniu tej czynności, dodajemy przycisk do paska, który będzie otwierał listę (AddStatic).

Box_MenuBar_AddStatic(hMenu, hListPlik, "Plik");

Pierwszy argument to uchwyt paska narzędzi, drugi - uchwyt listy, a trzeci - treść przycisku.

Potem wystarczy aby dodawać przyciski do listy:

przycisk = Box_MenuBar_AddListItem( hListPlik, "Treść" );

 

Natomiast jeżeli chcemy tworzyć przycisk, który nie wyświetla listy, lecz po prostu można na niego kliknąć, to dodajemy przycisk do głównego paska funkcją:

przycisk = Box_MenuBar_AddListItem( [b]hMenu[/b], "Treść" );

 

Jeśli chcemy dodać kolejne przyciski z listami, to wykonujemy od nowa #3 punkt.

 

4. Podpinanie menu do okna

Aby podpiąć menu do okna, wystarczy użyć funkcji:

Box_MenuBar_SetMenu( hMenu );

Której argumentem jest uchwyt menu. I wtedy menu z wszystkimi przyciskami zostaje dodane do okna.

 

5. Obsługa kliknięć

Aby sprawdzić, jaki przycisk został wciśnięty, wystarczy postawić warunek:

if (Box_MenuBar_Clicked( <id_przycisku, zmienna> ) == 1)
{
// akcja, czy co tam chcecie xd
}

 

Prosty przykład wszystkiego:

CREATE:

Box_LibraryLoad("GMBox.dll");
Box_TransferProc( window_handle() );

hMenu = Box_MenuBar_Create();
hListPlik = Box_MenuBar_CreatePopup();
Box_MenuBar_AddStatic(hMenu, hListPlik, "Plik");
nowy = Box_MenuBar_AddListItem(hListPlik, "Nowy");
Box_MenuBar_SetMenu( hMenu );


STEP:

if (Box_MenuBar_Clicked(nowy) == 1)
{
game_restart();
}

 

No i to na razie wszystko :)

Odnośnik do komentarza
Udostępnij na innych stronach

https://gmclan.org/index.php?czytajart=71

przekompiluj z opcjami z punktu #9

polega na zamianie na opcje bez dll, to samo sie robi z release

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, wszystko jest poprawione, link w 1 poście.

 

E: W zasadzie oni podali mi pewne rozwiązania, więc nie wiem, jak uważacie :D

 

E2: Jest nowszy build. Dodana funkcja symulująca wciśnięcie przycisku w menu (Box_MenuBar_Click( przycisk )). Download - 1 post.

Dokumentację uzupełnię przy okazji.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem, czy idzie tak zrobić z Twoim DLL-em ale w przykładzie tego nie widziałem, tak więc co dodać:

- możliwość podpinania submenu pod itemy

- włączanie/wyłączanie itemów

- itemy z możliwością zaznaczania

- ikonki do itemów

i może jeszcze możliwość ustawienia domyślnego itema w menu ("default menu item"). No i mógłbyś połączyć "Box_TransferProc( window_handle() )" z funkcją od ładowania biblioteki, nie widzę powodu żeby to wywoływać oddzielnie :P

 

Aha, w nazwach itemów z submenu można używać taba żeby wyrównać skrót klawiszowy (np. "Nowy...\tCTRL+N", gdzie "\t" to tab) -- można by o tym wspomnieć w dokumentacji.

Odnośnik do komentarza
Udostępnij na innych stronach

Co do taba: http://www.tannerwilliamson.com/wp-content..._batch_file.png

te wyrównanie skrótów klawiszowych do prawej (np. "Ctrl+N") jest zrobione w taki sposób:

"New\tCtrl+N"

"Open\tCtrl+O"

"Save\tCtrl+S"

itd.

w GM-ie zamiast tego "\t" można spokojnie wstawić znak tabulatora do stringa (albo to zrobić np. w taki sposób: "New" + chr( 9 ) + "Ctrl+N").

Odnośnik do komentarza
Udostępnij na innych stronach

Sorry za double posta, ale umieszczam tu wersję 1.1.1.4. Dodane funkcje:

- Box_MenuBar_GetDefaultItem( hMenu )

- Box_MenuBar_SetDefaultItem( hMenu, itemID )

- Box_MenuBar_SetItemState( hMenu, itemID, state )

- Box_MenuBar_CheckItem( hMenu, itemID, check )

- Box_MenuBar_Checked( hMenu, itemID )

 

Pierwsza: Zwraca ID domyślnego itemu w menu (hMenu)

Druga: Ustawia w menu (hMenu) domyślny przycisk (itemID)

Trzecia: Ustawia na przycisku (itemID) w danym menu (hMenu) stan (state). Albo 1 - aktywny; albo 0 - nieaktywny.

Czwarta: Zaznacza lub odznacza przycisk (itemID) w menu (hMenu). 1 - zaznacza; 0 - odznacza.

Piąta: Sprawdza czy przycisk (itemID) w menu (hMenu) jest wciśnięty. Jeśli tak - 1, jeśli nie - 0.

 

Dokumentację uzupełnie, jeśli nie będę miał na razie zamiaru dodawać czegoś nowego do DLL (czyli tak za jakiś czas). Na razie urozmaicam to co jest :)

W przykładzie jest pokazane użycie wszystkich funkcji, które dodałem.

Zaraz wrzucę aktualizację.

 

Ok, Link

 

Między czasie wydałem wersję 1.1.1.5. Dodana funkcja tworzenia submenu.

link

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...