Log-Fenster mit Eingabezeile als separates Toolwindow



  • So sieht das HauptWindow:

    WNDCLASSEX wc;
    
    	wc.lpszClassName = classname;//bekannt
    
    	wc.lpfnWndProc = p;//bekannt
    
    	wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;
    
    	wc.hInstance = hinstance_;//aus der WinMain
    
    	wc.hIcon = LoadIcon(0, IDI_APPLICATION);
    
    	wc.hIconSm = 0;
    
    	wc.hCursor = LoadCursor(0, IDC_ARROW);
    
    	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    
    	wc.lpszMenuName = 0;
    
    	wc.cbSize = sizeof(wc);
    
    	wc.cbClsExtra = 0;
    
    	wc.cbWndExtra = 0;
    
    	if(!RegisterClassEx(&wc)) {
    
    		MessageBox(0, L"Registration of the main window class failed", L"Error", MB_OK);
    
    		return;
    
    	}
    
    	RECT client;
    
    	client.bottom = 0;
    
    	client.left = 0;
    
    	client.right = w;//bekannt
    
    	client.top = h;//bekannt
    
    	AdjustWindowRectEx(&client, WS_OVERLAPPEDWINDOW, false, WS_EX_OVERLAPPEDWINDOW);
    
    	hParent_ = CreateWindowEx(
    
    		WS_EX_OVERLAPPEDWINDOW,
    
    		classname,					// name of window class 
    
    		title,						// title-bar string 
    
    		WS_OVERLAPPEDWINDOW,		// top-level window 
    
    		0,							// horizontal position 
    
    		0,							// vertical position 
    
    		client.right,				// width 
    
    		client.top,					// height 
    
    		0,							// no owner window 
    
    		0,							// use class menu 
    
    		hinstance_,					// handle to application instance 
    
    		0);							// no window-creation data
    


  • Kann mir jemand helfen? Besser wäre es, wenn die ganze Code neu geschrieben wird.



  • Zdravko schrieb:

    Besser wäre es, wenn die ganze Code neu geschrieben wird.

    Dann tu's doch...

    greetz, Swordfish



  • Swordfish schrieb:

    Zdravko schrieb:

    Besser wäre es, wenn die ganze Code neu geschrieben wird.

    Dann tu's doch...

    greetz, Swordfish

    Ok, dann tue ich es so. 😡



  • Zdravko schrieb:

    Swordfish schrieb:

    Zdravko schrieb:

    Besser wäre es, wenn die ganze Code neu geschrieben wird.

    Dann tu's doch...

    greetz, Swordfish

    Ok, dann tue ich es so. 😡

    ??? Weiss nicht was das bringen sollte; die Struktur der Codes ist imo korrekt. Fraglich ist nur wann die Fenster instanziiert werden und das lässt sich aus dem Code nich ersehen; wenn hInstance_ schon erzeugt ist ist's imo wirklich nur ein Problem mit dem Message-Dispatching.
    Breakpoint drauf setzen!

    Grüsse

    *this



  • Hmm, also erstens erstelle ich mit CreateWindowEx das Main Window. Dann erstelle ich mittels CreateMDIWindow das 2 Window. Dannach wird die Translate/Dispatch Sache durchgeführt! Wie schon gesagt - die Fehlermeldung ist beim:

    hwnd_ = CreateMDIWindow(
            L"CommandWindowClassName", 
            L"Command prompt", 
            MDIS_ALLCHILDSTYLES | WS_EX_TOOLWINDOW, 
            x, y, 
            w, h, 
            hparent_, 
            hinst, 
            0);
        if (!hwnd_) {
            MessageBox(0, L"Creation of the command window failed", L"Error", MB_OK); //hier stürzt das Programm ab
            return; 
        }
    


  • Zdravko schrieb:

    Hmm, also erstens erstelle ich mit CreateWindowEx das Main Window. Dann erstelle ich mittels CreateMDIWindow das 2 Window. Dannach wird die Translate/Dispatch Sache durchgeführt! Wie schon gesagt - die Fehlermeldung ist beim:

    hwnd_ = CreateMDIWindow(
            L"CommandWindowClassName", 
            L"Command prompt", 
            MDIS_ALLCHILDSTYLES | WS_EX_TOOLWINDOW, 
            x, y, 
            w, h, 
            hparent_, 
            hinst, 
            0);
        if (!hwnd_) {
            MessageBox(0, L"Creation of the command window failed", L"Error", MB_OK); //hier stürzt das Programm ab
            return; 
        }
    

    Momentchen bitte mal - wo ist denn Dein MDI CLient Fenster?
    Ich zähl da 2.

    - Den Hauptrahmen(parent = 0)
    - Das MDI Child

    3 sollten's aber sein; Du kannst afaik das MDI Child nicht einfach in den Hauptrahmen legen!

    Grüsse

    *this



  • Gast++ schrieb:

    Zdravko schrieb:

    Hmm, also erstens erstelle ich mit CreateWindowEx das Main Window. Dann erstelle ich mittels CreateMDIWindow das 2 Window. Dannach wird die Translate/Dispatch Sache durchgeführt! Wie schon gesagt - die Fehlermeldung ist beim:

    hwnd_ = CreateMDIWindow(
            L"CommandWindowClassName", 
            L"Command prompt", 
            MDIS_ALLCHILDSTYLES | WS_EX_TOOLWINDOW, 
            x, y, 
            w, h, 
            hparent_, 
            hinst, 
            0);
        if (!hwnd_) {
            MessageBox(0, L"Creation of the command window failed", L"Error", MB_OK); //hier stürzt das Programm ab
            return; 
        }
    

    Momentchen bitte mal - wo ist denn Dein MDI CLient Fenster?
    Ich zähl da 2.

    - Den Hauptrahmen(parent = 0)
    - Das MDI Child

    3 sollten's aber sein; Du kannst afaik das MDI Child nicht einfach in den Hauptrahmen legen!

    Was ich zitiert habe, ist genau das MDI Child.
    Also mein Vorgang:
    1. Erstellen des Hauptfensters
    2. Erstellen des MDI Client Fensters - hier ist das Problem.
    Warum?



  • "MDI Child" != "MDI Client" !!!

    Das muss agfaik so aussehen:

    Hauptfenster => "MDI Client" => "MDI Child"

    Du brauchst 3; nicht 2.
    😉

    Grüsse

    *this

    P.S.: Hast Du nen Petzold?



  • Ooops! Was ist das "MDI Client" ? Und wie erstelle ich so was?

    P.S. Was ist Petzold? 😕



  • Zdravko schrieb:

    Ooops! Was ist das "MDI Client" ? Und wie erstelle ich so was?
    P.S. Was ist Petzold? 😕

    Charles Petzold
    DER Autor DES Buches über Win32 Programmierung.

    Das hier
    http://www.joachimrohde.com/cms/xoops/modules/articles/article.php?id=90
    ist glaube ich eine nette Kurzeinführung in das Thema.

    Grüsse

    *this

    P.S.: Deshalb wars wichtig zu schauen wie und wo hParent_ usw erzeugt werden!



  • Okay, ich schaue mal nach...


Anmelden zum Antworten