RebornX JLI'ler
Anmeldedatum: 16.03.2007 Beiträge: 169
Medaillen: Keine
|
Verfasst am: 12.05.2007, 13:12 Titel: Meine erste Win-api Anwendung (hilfe!) |
|
|
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?? |
|