größe eines Listenelementes verändern
-
ClientToScreen(myRect);
.... das wäre nur nötig wenn du innerhald der Ctrl Klasse wärest...
-
ja aber es klappt ja irgendwie nicht

das ist das problem! ich möchte NUR die größe der Listbox verändern!
-
ja du sollst das ClientToScreen raushauen

-
Ich denke, da klatscht irgend etwas zusammen (WM_SIZE von Elternfenster und MoveWindow() vom Kindfenster). Weiß leider momentan keine saubere Lösung.

-
Du musst übrigens nicht alle Details vom vorhandenen Rechteck angeben, geht auch einfacher:
void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE ); void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );
-
ja, aber auch wenn ich ClientToScreen(myRect); raushaue geht es nicht!
muss ich denn
MoveWindow(...);allein aufrufen? ne oder weil das gilt ja für das gesamte fenster!!
ich muss dochm_List1.MoveWindow(...);aufrufen oder? nur dann kommt bei mir nen laufzeitfehler :-|
-
Ja wie gesagt.
1. Muss ClientToScreen raus...
2. Einfach das Rect übergeben.
3. Die MoveWindow Funktion von dem Ctrl benutzen.
-
1. hab ich ja
2. mach ich ja dann
3. da kommt ja ein laufzeitfehler - das ist das problemCRect myRect; GetClientRect(&myRect); //ClientToScreen(myRect); m_List1.MoveWindow(myRect.left, myRect.top,myRect.Width(), myRect.Height());
-
weis vieleicht jemand wie er mir weiterhelfen könnte? ^^
-
Im Release Mode sollte es laufen. Im Debug Mode erfolgt der Fehler in winocc.cpp bei folgender Stelle:
void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint) { ASSERT(::IsWindow(m_hWnd)); // Hier erfolgt die Fehlermeldung! if (m_pCtrlSite == NULL) ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint); else m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint); }Das ASSERT(...) schlägt Alarm, weil m_hWnd gleich 0 ist, also kein gültiges Fensterhandle.
Damit könnte es gehen:
CRect myRect; GetClientRect(&myRect); HWND hWnd = m_List1.GetSafeHwnd(); //Wir beschaffen uns ein gültiges Handle! ::MoveWindow(hWnd, myRect.left, myRect.top, myRect.Width(), myRect.Height(), TRUE);
-
@Erhard Henkes
vielen Danke! nun klappt es perfekt!!
-
Freut mich, dass ich doch noch helfen konnte.
