C++ Win32Api Gui Bild in Form drawen?



  • Hallo bin neu hier in Forum,
    uuzwar möchte ich wie in Titel schon steht meine in meine WinApi Gui ein Bild drawen lassen source code mit (Comments steht unten) aber habe keine Ahnung wie ich das mit GDI/GDI+ oder anderen Grafiklibarys machen soll!? Wenn ihr mir helfen könntet wäre ich dankbar ps: bitte mit Code Beispielen am besten direkt für mein Code damit ich es gut verstehe xD
    pps: (Achtet nicht auf die Rechtschreibung!)

    #include <windows.h>
    #include <iostream>
    #include <stdio.h> 
    #include <string.h>
    #include <string>
    #include <atlstr.h> 
    
    //Funktion der Windows Messages
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
    HWND hwnd, button1, Label1, button2, button3, Textbox1, Textbox2;
    
    //WinMain
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	WNDCLASSEX wc; //windows class
    
    	//Struct Information
    	wc.cbSize = sizeof(WNDCLASSEX);
    	wc.style = 0;
    	wc.lpfnWndProc = WndProc;
    	wc.cbClsExtra = 0;
    	wc.cbWndExtra = 0;
    	wc.hInstance = hInstance;
    	wc.hIcon = NULL;
    	wc.hCursor = LoadCursor(hInstance, IDC_ARROW);
    	wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
    	wc.lpszMenuName = NULL;
    	wc.lpszClassName = L"Gui Test";
    	wc.hIconSm = NULL;
    
    	//Registrierung der Klasse
    	if (!RegisterClassEx(&wc))
    	{
    		return 0;
    	}
    
    	//Tool decklarierung
    
    	//MainWindow
    	hwnd = CreateWindowExA(WS_EX_CLIENTEDGE, "Gui Test", "Win32 Gui Test C++",
    		(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
    		CW_USEDEFAULT, CW_USEDEFAULT, 500, 500, NULL, NULL, hInstance, NULL);
    
    	//Buttons
    	button1 = CreateWindowA("BUTTON", "Draw Text", (WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON)
    		, 10, 50, 450, 30, hwnd, NULL, hInstance, NULL);
    
    	button2 = CreateWindowA("BUTTON", "Load Image", (WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON)
    		, 10, 140, 450, 30, hwnd, NULL, hInstance, NULL);
    
    	button3 = CreateWindowA("BUTTON", "Browse", (WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON)
    		, 375, 100, 85, 30, hwnd, NULL, hInstance, NULL);
    
    	//Textboxen
    	Textbox1 = CreateWindowA("EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 450, 30, hwnd, NULL, hInstance, NULL);
    
    	Textbox2 = CreateWindowA("EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 100, 350, 30, hwnd, NULL, hInstance, NULL);
    
    	//label
    	Label1 = CreateWindowA("Static", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 420, 450, 30, hwnd, NULL, hInstance, NULL);
    
    	//Testet ob das MainWindow erstellt wurde
    	if (!hwnd)
    	{
    		return 0;
    	}
    
    	ShowWindow(hwnd, nCmdShow);
    	UpdateWindow(hwnd);
    
    	//Message die gesendet werden
    	MSG Msg;
    	while (GetMessage(&Msg, NULL, 0, 0) > 0)
    	{
    		TranslateMessage(&Msg);
    		DispatchMessage(&Msg);
    	}
    
    	return 0;
    }
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	switch (msg)
    
    	{
    		//Close
    	case WM_CLOSE:
    		DestroyWindow(hwnd);
    		break;
    
    		//Geschloßen
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	case WM_COMMAND:
    
    		//Button1 messages(Draw Text)
    		if (lParam == (LPARAM)button1 && wParam == BN_CLICKED)
    		{
    			TCHAR Textbox1_text[1024];
    				GetWindowText(Textbox1, Textbox1_text, 1024);
    				SendMessage(Label1, WM_SETTEXT, NULL, (LPARAM)Textbox1_text);
    			//MessageBoxA(hwnd, "Button gedrückt", "Messagebox", MB_ICONINFORMATION);
    		}
    
    		//Button2 messages(Load Image)
    		if (lParam == (LPARAM)button2 && wParam == BN_CLICKED)
    		{
    
    		}
    
    		//Button3 messages(Browse)
    		if (lParam == (LPARAM)button3 && wParam == BN_CLICKED)
    		{
    			//Browse Funk
    			OPENFILENAME openFile;
    			TCHAR szFileName[MAX_PATH];
    			TCHAR szFileTitle[MAX_PATH];
    			int index = 0;
    
    			ZeroMemory(&openFile, sizeof(OPENFILENAME));
    			openFile.lStructSize = sizeof(OPENFILENAME);
    			szFileName[0] = '\0';
    
    			szFileTitle[0] = '\0';
    			openFile.hwndOwner = hwnd;
    			openFile.lpstrFilter = L"My File (*.jpg)\0*.jpg\0";//Datei Formate
    			openFile.lpstrFile = szFileName;
    			openFile.nMaxFile = MAX_PATH;
    			openFile.lpstrFileTitle = szFileTitle;
    			openFile.nMaxFileTitle = sizeof(szFileTitle) / sizeof(*szFileTitle);
    			openFile.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
    			openFile.lpstrDefExt = L"mvl";
    
    			if (GetOpenFileName(&openFile))
    			{
    				SendMessage(Textbox2, WM_SETTEXT, NULL, (LPARAM)szFileName);
    				MessageBox(NULL, _T("Datei ausgewählt!"), _T("Hinweiß"), NULL);
    			}
    			else
    			{
    				MessageBox(NULL, _T("Keine Datei ausgewählt!"), _T("Hinweiß"), NULL);
    			}
    		}
    		break;
    	default:
    		return DefWindowProc(hwnd, msg, wParam, lParam);
    	}
    	return 0;
    }
    

    MFG
    Killerzwerg


Anmelden zum Antworten