OldSchoolHack GUI
OldSchoolHack GUI

OldSchoolHack GUI herunterladen

Das OldSchoolHack GUI kann per SVN heruntergeladen werden.
SVN Url: https://svn.oldschoolhack.me/oshgui/trunk/
Benutzername: anonymous
Passwort: keins

Alternativ gibt es hier ein Archiv:
https://gui.oldschoolhack.me/source/oshgui_20111216.zip

OldSchoolHack GUI verwenden

Um das OldSchoolHack GUI benutzen zu können, sind nur wenige Schritte notwendig:

  1. Vorraussetzungen:
    Ein C++0x/C++11 fähiger Compiler wie das Visual Studio 2010 oder eine neue Version des GCC
  2. Einbinden der entsprechenden Headerdateien:
    #include "OSHGui.hpp"
    #include "Input<Platform>.hpp" //dazu später mehr
    #include "Drawing\<RenderEngine>.hpp" //dazu später mehr
    Außerdem müsst den Ordner des GUIs als Include-Pfad bei eurem Compiler einrichten
  3. Vorbereiten des GUIs und erzeugen des Renderers:
    //Beispiel: DirectX9
    //#include "Drawing\Direct3D9\RendererDX9.hpp"
    Application::Create(new Drawing::RendererDX9(device)); //device ist ein Zeiger auf IDirect3DDevice9
  4. Initialisieren der Nachrichtenverarbeitung:
    //Beispiel: Windows
    //#include "Input\Windows.hpp"
    Input::Windows input;
    //ohne Hook in einer normalen Nachrichtenschleife bei Windowsprogrammen:
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));
    while (true)
    {
    if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    {
    input.ProcessMessage(&msg);
    if (msg.message == WM_QUIT)
    {
    break;
    }
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }
    //oder per Hook
    HHOOK hookHandle;
    LRESULT CALLBACK MessageHook(int code, WPARAM wParam, LPARAM lParam)
    {
    if (lParam &0x80000000 || lParam &0x40000000)
    {
    return CallNextHookEx(hookHandle, code, wParam, lParam);
    }
    if (code == HC_ACTION)
    {
    if (input.ProcessMessage((LPMSG)lParam))
    {
    return TRUE;
    }
    }
    return CallNextHookEx(hookHandle, code, wParam, lParam);
    }
    hookHandle = SetWindowsHookEx(WH_GETMESSAGE, MessageHook, NULL, GetCurrentThreadId());
  5. Erzeugen und Zuweisen der Hauptform:
    Application::Run(std::shared_ptr<Form>(new MeineForm())); //mehr dazu im Tutorial "Eine neue Form erstellen"
  6. Vorbereiten der grafischen Ausgabe:
    //Beispiel: DirectX9
    device->Clear(0, 0, D3DCLEAR_TARGET, 0xFF000000, 1.0f, 0);
    device->BeginScene();
    Application::GetRenderer()->Begin();
    Application::Render();
    Application::GetRenderer()->End();
    device->EndScene();
    device->Present(0, 0, 0, 0);
  7. Aktivieren und Deaktivieren des GUI:
    Application::Enable();
    ...
    Application::Disable();
    //oder Application::Toggle();


Tutorials

Eine neue Form erstellen
Eine Form mit Leben füllen
MessageBoxen auswerten
Code Snippets

Beispiele

eine einfache Form
ein ganzes Projekt