Log-Fenster mit Eingabezeile als separates Toolwindow
-
Ja jetzt hast es näher erklärt, und?
Ne Lösung für dein Problem mit der Kommunikation wurde dir doch genannt, oder was wilst du jetzt?schirrmie
-
Wo ist die RichEdit Klasse?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_win32com.asp
-
-
Ok, aber erstens muss ich das zweite Window richtig erstellen. Leider klappt das nicht.
cmd_win(HINSTANCE hinst, HWND hparent_, int x, int y, int w, int h) { WNDCLASSEX wc; wc.lpszClassName = L"CommandWindowClassName"; wc.lpfnWndProc = CWP; wc.style = CS_NOCLOSE; wc.hInstance = hinst; 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 command window class failed", L"Error", MB_OK); return; } RECT client; client.bottom = 0; client.left = 0; client.right = w; client.top = h; AdjustWindowRectEx(&client, WS_OVERLAPPEDWINDOW, false, WS_EX_OVERLAPPEDWINDOW); 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; } } LRESULT CALLBACK CWP(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { /*switch (uMsg) { // Check for windows messages was soll ich hier schreiebn? }*/ // Pass all unhandled messages to DefMDIChildProc return DefMDIChildProc(hwnd, uMsg, wParam, lParam); }
-
LRESULT CALLBACK CWP(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { /*switch (uMsg) { // Check for windows messages was soll ich hier schreiebn? }*/ // Pass all unhandled messages to DefMDIChildProc return DefMDIChildProc(hwnd, uMsg, wParam, lParam); }Wie wär's denn mit sowas?
boof fPromptFocussed; //... case WM_COMMAND: //... case WM_SETFOCUS: //... fPromptFocussed = trus; //... case WM_ENTER : //... if(fPromptFocussed) { //... PostThreadMessage(...) // oae. //... } //... fPromptFocussed = false;Grüsse
*this
-
Gast++, ich fürchte, das sei nicht das größte Problem. Etwas ist falsch mit dem Kreieren.

-
Zdravko schrieb:
Gast++, ich fürchte, das sei nicht das größte Problem. Etwas ist falsch mit dem Kreieren.

Ist
HWND hParent_denn schon valide wenn cmd_win gerufen wird?
"Wer" ist denn hParent_ eigentlich?Grüsse
*this
-
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 Child3 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 Child3 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...