JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=f92669a532884e0fd908294325840e23Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Meine erste Win-api Anwendung (hilfe!)

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RebornX
JLI'ler



Anmeldedatum: 16.03.2007
Beiträge: 169

Medaillen: Keine

BeitragVerfasst am: 12.05.2007, 13:12    Titel: Meine erste Win-api Anwendung (hilfe!) Antworten mit Zitat

Hi,

ehm ich wollt mich mal in das Thema Win-Api einarbeiten, und bin auch schon ein wenig vorrangekommen, jedoch habe ich noch ein paar fragen:

CPP:
#include <Windows.h>

// ======================================================
// Globale Variablen
HINSTANCE        g_hInstance;        // Instanz auf das Programm
HWND             g_hText;            // Instanz auf den Text
HWND             g_hButton1;         // Instanz auf den ersten Button
HWND             g_hButton2;         // Instanz auf den zweiten Button
HWND             g_hButton3;         // Instanz auf den dritten Button

// ======================================================
// Die Nachrichtenfunktion
LRESULT CALLBACK WindowProc(HWND hWindow,
                            unsigned int uiMsg,
                            WPARAM WParam,
                            LPARAM LParam)
{
        // Die Nachricht durchgehen
        switch(uiMsg)
        {
                case WM_CREATE:
                        // Das Fenster wurde erstellt.
                        break;

                case WM_COMMAND:
                        // Ein Button wurde gedrückt, welcher?
                        if(LParam == (LPARAM)g_hButton1)        // Button1?
                                SendMessage(g_hText, WM_SETTEXT, 0,
                                    (LPARAM)"Hier steht Text 1");

                        if(LParam == (LPARAM)g_hButton2)        // Button2?
                                SendMessage(g_hText, WM_SETTEXT, 0,
                                    (LPARAM)"Hier steht Text 2");

                        if(LParam == (LPARAM)g_hButton3)        // Button3?
                                SendMessage(g_hText, WM_SETTEXT, 0,
                                    (LPARAM)"Hier steht Text 3");
                        break;

                case WM_DESTROY:
                        // Das Fenster wird beendet
                        DestroyWindow(hWindow); // Beendet das Fenster
                        UnregisterClass("MySampleClassForMySampleWindow ",
                                        g_hInstance);    // Löscht die Fensterklasse
                        PostQuitMessage(1);
                        break;

                default:
                        break;
        }

        // Die Nachricht an Windows weiterleiten
        return DefWindowProc(hWindow, uiMsg, WParam, LParam);
}

// ======================================================
// Die Hauptfunktion
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
        WNDCLASSEX  WindowClass;                       // Die Fensterklasse
        MSG         Message;                           // Die Nachricht
        HWND        hWindow;                           // Das Fenster
        HWND        hButton1, hButton2, hButton3;      // Die Buttons
        HWND        hText;                             // Der Text

        // Die Programminstanz globalisieren
        g_hInstance = hInstance;

        // Die Fensterklasse erstellen
        ZeroMemory(&WindowClass, sizeof(WNDCLASSEX));        // sonst kann es zu Fehlern kommen
        WindowClass.cbSize          = sizeof(WNDCLASSEX);
        WindowClass.style           = CS_CLASSDC;
        WindowClass.lpfnWndProc     = WindowProc;
        WindowClass.cbClsExtra      = 0;
        WindowClass.cbWndExtra      = 0;
        WindowClass.hInstance       = hInstance;
        WindowClass.hIcon           = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
        WindowClass.hIconSm         = WindowClass.hIcon;
        WindowClass.hCursor         = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_ARROW));
        WindowClass.hbrBackground   = GetSysColorBrush(COLOR_3DFACE);
        WindowClass.lpszMenuName    = NULL;
        WindowClass.lpszClassName   = "MySampleClassForMySampleWindow";

        // Die Fensterklasse registrieren
        if(!RegisterClassEx(&WindowClass))
        {
                // Fehler!
                return FALSE;
        }

        // Das Fenster erstellen
        hWindow = CreateWindow(WindowClass.lpszClassName,
                               "Testfenster",
                               WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                               50, 50,
                               305, 180,
                               NULL,
                               NULL,
                               hInstance,
                               NULL);
        if(!hWindow)
                return FALSE;

        // Die Buttons erstellen
        hButton1 = CreateWindow("BUTTON", "Text 1 anzeigen",
                       WS_VISIBLE | WS_CHILD, 5, 5, 90, 30,
                       hWindow, NULL, hInstance, NULL);
        if(!hButton1) return FALSE;
        hButton2 = CreateWindow("BUTTON", "Text 2 anzeigen",
                       WS_VISIBLE | WS_CHILD, 100, 5, 90, 30,
                       hWindow, NULL, hInstance, NULL);
        if(!hButton2) return FALSE;
        hButton3 = CreateWindow("BUTTON", "Text 3 anzeigen",
                       WS_VISIBLE | WS_CHILD, 200, 5, 90, 30,
                       hWindow, NULL, hInstance, NULL);
        if(!hButton3) return FALSE;

        // Den Text erstellen
        hText = CreateWindow("STATIC", "Hallo Welt\n"
                    "Das ist der erste Text,\nDer Zweite kommt auf Knopfdruck^^",
                    WS_VISIBLE | WS_CHILD, 5, 40, 180, 100, hWindow, NULL, hInstance, NULL);
        if(!hText) return FALSE;

        // Die Handles globalisieren
        g_hButton1 = hButton1;
        g_hButton2 = hButton2;
        g_hButton3 = hButton3;
        g_hText = hText;

        // Die Schrift setzen
        SendMessage(hText, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
        SendMessage(hButton1, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
        SendMessage(hButton2, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
        SendMessage(hButton3, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);

        // Die Fensterschleife starten
        ZeroMemory(&Message, sizeof(MSG)); // sonst kann es zu Fehlern kommen
        while(GetMessage(&Message, NULL, 0, 0))
        {
                // Die Nachricht weiterleiten
                TranslateMessage(&Message);
                DispatchMessage(&Message);
                if(Message.message == WM_QUIT)
                {
                        // Das Fenster soll beendet werden; wir verlassen die Schleife
                        break;
                }
        }

        // Alles OK!
        return TRUE;
}


Wie hau ich da ein Hintergrund rein, also ein Bild im bmp Format?
Und wie mache ich das sich das man das Fenster nicht mehr vergrößern/verkleinern kann??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 12.05.2007, 14:46    Titel: Antworten mit Zitat

Bitmap: BitBlt (=> msdn) in WM_PAINT.
Window Größe: Schau die die Flags für Windowstyles bei CreateWindow(Ex) an.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum