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.