Child Fenster



  • Hallo,
    ich hab' mal versuch ein Child-Fenster zu machen, was auch ganz gut geht nur will es nicht auf dem Bildschirm erscheinen...

    //Für das Haupt-Fenster
    	wndclass.style			= CS_HREDRAW | CS_VREDRAW;
    	wndclass.lpfnWndProc	= WndProc;
    	wndclass.cbClsExtra		= 0;
    	wndclass.cbWndExtra		= 0;
    	wndclass.hInstance		= hInstance;
    	wndclass.hIcon			= LoadIcon(NULL,IDI_APPLICATION);
    	wndclass.hCursor		= LoadCursor(NULL,IDC_ARROW);
    	wndclass.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
    	wndclass.lpszMenuName	= NULL;
    	wndclass.lpszClassName	= szAppName;
    
    //Für das Child Fenster 
    
    	wndclass.lpfnWndProc	= ChildProc;
    	wndclass.cbWndExtra		= 0;
    	wndclass.hIcon			= NULL;
    	wndclass.lpszClassName	= TEXT("Eintag suchen");
    
    //In WndProc:
    
    child		  = CreateWindow(TEXT("Eintrag suchen"), TEXT("Eintrag suchen"),
    						WS_CHILDWINDOW | WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT, 700, 200,
    						hwnd, NULL, NULL, NULL);
    

    Meine Frage ist jetzt, wie bekomme ich das auf den Bildschirm?

    Wer das ganze Prog. sehen will:

    #include <Windows.h>
    #include <fstream>
    #include <iostream>
    using std::ifstream;
    using std::ofstream;
    
    LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM);
    LRESULT CALLBACK ChildProc (HWND,UINT,WPARAM,LPARAM);
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    	PSTR szCmdLine, int iCmdShow)
    {
    	static TCHAR	szAppName[] = TEXT("Test");
    	HWND			hwnd;
    	MSG				msg;
    	WNDCLASS		wndclass;
    
    	wndclass.style			= CS_HREDRAW | CS_VREDRAW;
    	wndclass.lpfnWndProc	= WndProc;
    	wndclass.cbClsExtra		= 0;
    	wndclass.cbWndExtra		= 0;
    	wndclass.hInstance		= hInstance;
    	wndclass.hIcon			= LoadIcon(NULL,IDI_APPLICATION);
    	wndclass.hCursor		= LoadCursor(NULL,IDC_ARROW);
    	wndclass.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
    	wndclass.lpszMenuName	= NULL;
    	wndclass.lpszClassName	= szAppName;
    
    	if(!RegisterClass(&wndclass))
    	{
    		MessageBox(NULL, TEXT ("Ein unbekannter Fehler ist aufgetretten!"), szAppName, 
    			MB_OK | MB_ICONERROR);
    		return 0;
    	}
    
    	wndclass.lpfnWndProc	= ChildProc;
    	wndclass.cbWndExtra		= 0;
    	wndclass.hIcon			= NULL;
    	wndclass.lpszClassName	= TEXT("Eintag suchen");
    
    	if(!RegisterClass(&wndclass))
    	{
    		MessageBox(NULL, TEXT ("Ein unbekannter Fehler ist aufgetretten!"), szAppName, 
    			MB_OK | MB_ICONERROR);
    		return 0;
    	}
    
    	hwnd = CreateWindow (szAppName,
    		szAppName,
    		WS_SYSMENU,
    		CW_USEDEFAULT,
    		CW_USEDEFAULT,
    		430,
    		250,
    		NULL,
    		NULL,
    		hInstance,
    		NULL );
    
    	ShowWindow (hwnd, iCmdShow);
    	UpdateWindow(hwnd);
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HDC				hdc;
    	PAINTSTRUCT		ps;
    	RECT			rect;
    	HBRUSH			hBrush;
    	RECT			rect2;
    	static HWND		hwndButton[4], child;
    	ifstream		in;
    	ofstream		out;
    
    	SetRect(&rect2, 0,0,430,250);
    	hBrush = CreateSolidBrush (RGB(200,200,200));
    
    	switch (message)
    	{
    	case WM_CREATE:
    		hdc = GetDC(hwnd);
    		hwndButton[0] = CreateWindow(TEXT("Button"), TEXT("Eintrag suchen"), 
    						WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 10, 10, 200, 100,hwnd, 
    						(HMENU) 0, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
    		hwndButton[1] = CreateWindow(TEXT("Button"), TEXT("Eintrag vornehmen"), 
    						WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 220, 10, 200, 100,hwnd, 
    						(HMENU) 1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
    		hwndButton[2] = CreateWindow(TEXT("Button"), TEXT("Datei öffnen"), 
    						WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 10, 120, 200, 100,hwnd, 
    						(HMENU) 2, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
    		hwndButton[3] = CreateWindow(TEXT("Button"), TEXT("Beenden"), 
    						WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 220, 120, 200, 100,hwnd, 
    						(HMENU) 3, ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
    		child		  = CreateWindow(TEXT("Eintrag suchen"), TEXT("Eintrag suchen"),
    						WS_CHILDWINDOW | WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT, 700, 200,
    						hwnd, NULL, NULL, NULL);
    		ReleaseDC(hwnd, hdc);
    		return 0;
    
    	case WM_PAINT:
    
    		hdc = BeginPaint (hwnd, &ps);
    		GetClientRect(hwnd, &rect);
    		FillRect(hdc, &rect2, hBrush);
    		EndPaint(hwnd,&ps);
    		return 0;
    
    	case WM_COMMAND:
    
    		if(lParam == (LPARAM)hwndButton[2])
    		{
    			if(HIWORD(wParam) == BN_CLICKED)
    			{
    			system("start DB.txt");
    			}
    		}
    		if(lParam == (LPARAM)hwndButton[3])
    		{
    			if(HIWORD(wParam) == BN_CLICKED)
    			{
    				if (in.is_open())
    				{
    					in.close();
    				}
    				if (out.is_open())
    				{
    					out.close();
    				}
    				PostQuitMessage(0);
    			}
    		}
    		return 0;
    
    	case WM_DESTROY:
    				if (in.is_open())
    				{
    					in.close();
    				}
    				if (out.is_open())
    				{
    					out.close();
    				}
    		DeleteObject(hBrush);
    		PostQuitMessage(0);
    		return 0;
    
    	}
    	return DefWindowProc (hwnd, message, wParam, lParam);
    }
    	LRESULT CALLBACK ChildProc(HWND child, UINT message, WPARAM wParam, LPARAM lParam)
    	{
    		switch(message)
    		{
    		case WM_DESTROY:
    			ShowWindow(child, FALSE);
    		}
    
    	return DefWindowProc (child, message, wParam, lParam);
    	}
    


  • Wenn Herr Child, Herrn "Eintrag" sucht, dann findet er ihn nicht, weil dieser Herr "Eintag" heißt.


Anmelden zum Antworten