Dialogfeldgröße ändern (mit ClipCursor(), nur umgekehrt) ??
-
mit ClipCursor() kan man ja bestimmen, das der benutzer seinen cursor nur in dem angegebenen bereich bewegen kann.
gibt es eine funktion, die ihn den cursor überall bewegen lässt, nur NICHT im angegebenen bereich ?? (also genau die umgekehrte funktion)
-
Erst mal re
Und nope, soweit ich weis gibts sowas nicht (laut MSDN).
Möglich, aber sehr aufwändig und ressourcenfressend wäre, die Cursor-Position mittels GetCursorPos() abzufragen und dann, wenn der Cursor im "verbotenen" Bereich ist, ihn aus dem bereich rauszusetzen (SetCursorpos).
Wie gesagt denke ich jedoch, der Aufwand mit dieser Methode ist zu gross.
(Vielleicht sollte ich einfach nicht so viel denken, im Zeitalter von 6Ghz P4s mit 500 °C Wärmeabgabe :))MfG me
-
hmm, mist. hab mir sowas schon gedacht. aber danke für den tip.
habs bis jetzt immer so gemacht:
wenn die dialogfeldgröße kleiner als der minimalbereich ist, wird die größe auf die mindestgröße gesetzt. das hatte zur folge, das ein nerviges flimmern kahm
-
wenn die dialogfeldgröße kleiner als der minimalbereich ist, wird die größe auf die mindestgröße gesetzt. das hatte zur folge, das ein nerviges flimmern kahm
?? was willst du den machen, solltest vielleicht den class style ändern oder nach deinen bedürfnissen selbst registrieren.
zeig mal dein codeauschnitt
-
CRect rRect; int iTop, iBottom, iLeft, iRight, iWidthHlf; int iWidth_CXFrame; int iWidth, iHeight; GetWindowRect(rRect); iWidth = rRect.Width(); iHeight = rRect.Height(); if ((iWidth < DLG_WIDTH_MIN) || (iHeight < DLG_HEIGHT_MIN)) { if (iWidth < DLG_WIDTH_MIN) iWidth = DLG_WIDTH_MIN; if (iHeight < DLG_HEIGHT_MIN) iHeight = DLG_HEIGHT_MIN; SetWindowPos(&wndNoTopMost, NULL, NULL, iWidth, iHeight, SWP_NOMOVE); } iWidth_CXFrame = GetSystemMetrics(SM_CXFRAME); iTop = CTRL_ABSTAND_TOP; iBottom = iHeight - CTRL_ABSTAND_BOTTOM; iLeft = CTRL_ABSTAND_LEFT; iRight = iWidth - iWidth_CXFrame * 2 - CTRL_ABSTAND_RIGHT; iWidthHlf = iRight / 2; GetDlgItem(IDC_LISTE1)->SetWindowPos(NULL, iLeft + iTeamBreite + DLG_PERSONAL_TAB_ABSTAND, iTop, iRight - iTeamBreite - DLG_PERSONAL_TAB_ABSTAND, iBottom, NULL); GetDlgItem(IDC_LISTE2)->SetWindowPos(NULL, iLeft, iTop, iTeamBreite, iBottom, NULL);
hatte mal versucht in PreTranslateMessage() die nachricht abzufangen falls die mindestgröße unterschritten wird, aber wollte nicht so richtig.
kann mir aber vorstellen das ich nen fehler gemacht habe. theoretisch würde das doch passen oder nicht !?
-
schau dir mal WM_GETMINMAXINFO an
MINMAXINFO* p=(MINMAXINFO*)lParam; p->ptMinTrackSize.x=470; p->ptMinTrackSize.y=200;
-
hat sofort geklappt
1000 dank !! *freu*