Button FLÜSSIG von links nach rechts wandern lassen !
-
Aloha,
vergeßt SetWindowPos
Nehmt
Sleep(1); GetDlgItem(IDC_BUTTON1)->MoveWindow(r); UpdateWindow();
inner Schleife oder nen Timer, oder sontwo.
r ist natürlich ein CRect.Grüße
BOA
-
Meinst du es so ? Wenn ja, bei mir klappt nicht, Der Button bewegt sich wieder nur einmal !
if(nIDEvent == timer) { for(int i = 0; i < 100; i++) { CRect rect; GetDlgItem(IDC_BUTTON1)->GetClientRect(rect); GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL, rect.left + 3, 20, 100,50, NULL); } }
@lsowada
Zu 1) Denke schon, da der Timer ja nicht beendet wird !
Zu 2) Denke nicht, da der Button ja nur einmal wandert !Auch wenn ich MoveWindow verwende klappts nicht ! Der Button bewegt sich nur ein mal !
@All
Woran kann das liegen ?Danke
Spy-Eye
-
Sorry lsowada, habe ausversehen dein Nickname Gecopyied & gepasted ! Natürlich habe ich (Spy-Eye) das oben gepostet
Sorry
-
BOA schrieb:
Aloha,
vergeßt SetWindowPos
Nehmt
Sleep(1); GetDlgItem(IDC_BUTTON1)->MoveWindow(r); UpdateWindow();
inner Schleife oder nen Timer, oder sontwo.
r ist natürlich ein CRect.ja gähn, daran liegts ja, wie oben beschriebn nicht.
@wada:
ich meine, dass du das rect nur einmal einlesen sollst, und dann den button immer mit
GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL, i+rect.left, 20, 100,50, NULL);
rect.left musst du dann einmal, vor der schleife auslesen.
Esco
-
Stimmt Esco, mit einer Schleife geht es ! Doch jetzt ist das Problem, das man während der For-Schleife den Button ja nicht anklicken kann. Und wenn ich den Code in einem Thread packe, dann kann ich von dort aus nicht auf dem Button zugreifen. Es entsteht dann ein (Compiler-)Fehler !
Hast du einen anderen Lösungsvorschlag ?
Danke
Spy-Eye
-
Spy-Eye schrieb:
Stimmt Esco, mit einer Schleife geht es ! Doch jetzt ist das Problem, das man während der For-Schleife den Button ja nicht anklicken kann. Und wenn ich den Code in einem Thread packe, dann kann ich von dort aus nicht auf dem Button zugreifen. Es entsteht dann ein (Compiler-)Fehler !
Hast du einen anderen Lösungsvorschlag ?
Danke
Spy-Eyehallo, was für ein fehler entsteht denn da genau?!
es gibt ja zwei arten von threats: die einen können währenddessen noch benutzeringaben empfangen, die anderen nicht.
Esco
-
Ich meine einen ganz normalen Arbeits-Thread !
//ArbeitsThread : UINT Thread(LPVOID pParam) { ... }
Es entstehen z.B. solche Fehler :
'GetDlgItem' : function does not take 1 parameters
left of '->GetClientRect' must point to class/struct/union
'GetDlgItem' : function does not take 1 parameters
'->SetWindowPos' must point to class/struct/union
Weisst du was ich da machen kann ?
Danke
-
worker threats können keine benutzereingaben empfangen.
das buch, wo ich das damals raus hab hab ich aber nich mehr. musst dich mal erkundigen; es gibt zwei verschiedene threat arten, der nicht_worker_threat kann dann benujtzereingaben empfangen.Esco
-
http://search.microsoft.com/search/results.aspx?view=msdn&st=b&na=82&qu=CWinThread+purpose&s=1&swc=4
das kannst dir ma anschauen. ich hab immer mit der msdn aufm rechner gearbeitet, und da stehts unter CWinThreat -> purpose of
warum weshalb und wieso du da den andern threat aufmachen musst und wie du das machst. du musst eben ne klasse von CWinthreat ableiten, die dann deinen threat startet.esco
-
Dabke ! Werde ich mir mal anschauen !