Button FLÜSSIG von links nach rechts wandern lassen !



  • Hallo Spy-Eye!

    Also ich würde jetzt an Deiner Stelle zwei Fragen klären:

    1. Wird SetWindowPos bzw. GetClientRect mehr als einmal aufgerufen?
    2. Wird rect.left von IDC_BUTTON1 wirklich durch SetWindowPos bei jedem
      Aufruf um 3 erhöht?

    Geb mal Rückmeldung wenn Du beide Fragen geklärt hast.

    Mit besten Grüßen, Lothar.



  • 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



  • @Esco

    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 !

    @BOA

    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-Eye

    hallo, 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 !


Anmelden zum Antworten