(WinAPI) Newbee frage zu win32 app
-
Hi
Grad hab ich mir ne win32 anwendung geschrieben.
Die lies sich mit vc++ auch ganz toll compilieren, nur, wenn ich sie ausführe so endet sie sofort!
Die Anwendung ist ein POPUP-Fenster ohne menü und buttons. Auch die messages lass ich DefWindowProc() behandeln.
Also mein Problem...:
Wie krieg ichs hin das das Fenster geöffnet bleibt??
wenn jemand einen kleinen Tipp hat...
-
du bist hier wohl im falschen forum!
trotzdem: hast du auch eine nachrichten schleife eingerichtet?
-
falsches Forum? ..... naja!
ja hab ich schon eingebaut, also die Nachrichten-Schleife.
Ich prüfe die PeekMessage-Methode auf wahr oder falsch um dann Translate und DispatchMessage auszuführen.
Sollte ich diese Schleife, also if(peekmessage...) in die WinMain() reinschreiben? Denn da steht sie gerade...
-
poste mal den ganzen kode!
-
hmm, hmm, wenn du meinst...
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "prototypen.h"
#include "e:\Entwicklung\files\resource.h"int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// erstmal unser Fenster deklarieren:WNDCLASSEX fuck_fenster;
MSG fuck_fenster_msg;
HWND fuck_fenster_hwnd;
HBITMAP hBitmap;fuck_fenster.cbClsExtra = 0;
fuck_fenster.cbSize = sizeof(WNDCLASSEX);
fuck_fenster.cbWndExtra = 0;
fuck_fenster.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
fuck_fenster.hCursor = LoadCursor(NULL, IDC_ARROW);
fuck_fenster.hIcon = LoadIcon(NULL, IDI_WINLOGO);
fuck_fenster.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
fuck_fenster.hInstance = hInstance;
fuck_fenster.lpfnWndProc = MsgHandler;
fuck_fenster.lpszClassName = "Fuck Fenster";
fuck_fenster.lpszMenuName = NULL;
fuck_fenster.style = CS_VREDRAW | CS_HREDRAW | WNDC | CS_DBLCLKS;RegisterClassEx(&fuck_fenster);
fuck_fenster_hwnd = CreateWindowEx(NULL, "Fuck Fenster", "Aktives Fenster",
WS_POPUP | WS_VISIBLE, 100, 100, 620, 480, NULL, NULL, hInstance, NULL);// und checken ob das gut ging und dann zeigen!!
if(fuck_fenster_hwnd == 0)
{
MessageBox(fuck_fenster_hwnd, "Fenster erstellen hat nicht geklappt!",
"Fehler", MB_ICONEXCLAMATION | MB_OK);
}
if((PeekMessage(&fuck_fenster_msg, fuck_fenster_hwnd, 0, 0, PM_REMOVE)))
{
TranslateMessage(&fuck_fenster_msg);
DispatchMessage(&fuck_fenster_msg);
}else
{
MessageBox(fuck_fenster_hwnd, "Kann keine Messages lesen!",
"Fehler", MB_ICONEXCLAMATION | MB_OK);
}hBitmap = (HBITMAP)LoadImage(NULL, SLIMY.bmp, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
ShowWindow(fuck_fenster_hwnd, nCmdShow);
UpdateWindow(fuck_fenster_hwnd);
//ZeigeFenster(fuck_fenster_hwnd, fuck_fenster_msg);return(fuck_fenster_msg.wParam); //Rückgabe an das System
}// Ende WinMain!// Anfang MsgHandler
LRESULT CALLBACK MsgHandler(HWND fuck_fenster_hwnd, UINT fuck_fenster_msg,
WPARAM wParam, LPARAM lParam)
{
if(fuck_fenster_msg == WM_CLOSE)
{
DestroyWindow(fuck_fenster_hwnd);
return(0);
}
if(fuck_fenster_msg == WM_DESTROY)
PostQuitMessage(0);
if(fuck_fenster_msg == WM_PAINT)
{HDC hdc;
PAINTSTRUCT ps;
int pixel = 1;
hdc = BeginPaint(fuck_fenster_hwnd, &ps);
RECT textrect = {100, 100, 500, 500};SetTextColor(hdc, RGB(255,0,0));
SetBkColor(hdc, RGB(0,0,0));
SetBkMode(hdc, TRANSPARENT);
TextOut(hdc, 50, 50, "Ist das eine schoene Welt!", 26);DrawText(hdc, "man ist das ein geiler Text!!!", 29, &textrect, DT_CENTER);
HDC pixel_hdc = GetDC(fuck_fenster_hwnd);
if(!(SetPixelV(pixel_hdc, 100, 300, RGB(255,0,0))))
pixel = 0;
ReleaseDC(fuck_fenster_hwnd, pixel_hdc);
if(pixel == 0)
{
MessageBox(fuck_fenster_hwnd, "Ich konnte keinen Pixel malen!",
"Fehler!", MB_ICONEXCLAMATION | MB_OK);
}else
MessageBox(fuck_fenster_hwnd, "Ich konnte Pixel malen!",
"Info!", MB_ICONEXCLAMATION | MB_OK);
EndPaint(fuck_fenster_hwnd, &ps);
return(0);
}return(DefWindowProc(fuck_fenster_hwnd, fuck_fenster_msg, wParam, lParam));
}// Ende MsgHandler....soweit!
uwerfend ist das nicht und geht wohl auch ein bisschen durcheinander.