|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 11.11.2008, 16:58 Titel: Assembler-Sekunden und Minuten aus Millisekunden berechnen |
|
|
Hallo!
Ich habe im Moment nicht die richtige Idee wie ich das anstellen könnte.
Es werden von mciSendString die Millisekunden zurückgegeben und ich habe 2 EDIT-Felder, eines für die Minuten und eines für die Sekunden. Nun steht bei über einer Minute beispielsweise 1 min 62 Sek. statt 1 min 2 Sek (eigentlich klar) ich müsste irgendwie mit dem Rest arbeiten aber fällt mir momentan nichts Gescheites ein.
Ich habe folgenden Code (C++, sei mir vergeben ):
Code: | void CMedienwiedergabe3Dlg::OnTimer(UINT_PTR nIDEvent)
{char spos[256];
mciSendString("status MyAlias position", spos,255,0);
DWORD dwPos=(DWORD)atoi(spos);
DWORD sek; DWORD min; DWORD tausend=1000; DWORD sechzig=60;
char sposmin[256]; char spossek[256];
__asm{
fild dwPos
fidiv tausend
fist sek
mov eax, sek
cmp eax, 60
jb MSek
fidiv sechzig
fist min
jmp Mmin
MSek: mov min, 0
Mmin: nop
}
wsprintf(sposmin, "%i", min);
wsprintf(spossek, "%i", sek);
::SendMessage(editPosition.m_hWnd, WM_SETTEXT, NULL,(LPARAM)sposmin);
::SendMessage(EditSek.m_hWnd, WM_SETTEXT, NULL,(LPARAM)spossek);
|
Vielen Dank _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 11.11.2008, 19:15 Titel: |
|
|
In Inlineasm:
Code: | Dim As Integer min, sek, ms =62123
Asm
mov eax, [ms]
mov ecx, 1000
mov ebx, 60
Xor edx, edx
idiv ecx
Xor edx, edx
idiv ebx
mov [min], eax
mov [sek], edx
End Asm
? ms
? min;":";sek
Sleep
|
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 11.11.2008, 19:26 Titel: |
|
|
Super! Vielen vielen Dank. Ist ja bestens.
Habe noch ein kleines Problem, wenn sich jemand mit MFC auskennt: das Fenster wird nicht regelmässig aktualisiert... 4 Sekunden zählt die Zeit mit, dann bleibt sie stehen und der Balken für die Position auch. Sobald man aber im Fenster rumklickt läuft's wieder! _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 11.11.2008, 22:07 Titel: |
|
|
WM_TIMER |
|
Nach oben |
|
|
c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 12.11.2008, 01:27 Titel: |
|
|
Code: | void CMedienwiedergabe3Dlg::OnTimer(UINT_PTR nIDEvent) |
Dies ist die Timer-Funktion; er wird 2 Mal pro Sekunde aufgerufen. Ich denke eher es ist ein Problem mit invalidate, welches aber eigentlich alleine aufgerufen werden sollte für ein Steuerelement.
Bei den MFC gibt es das mit UpdateData() welches ich nicht so ganz verstehe, darum habe ich hier auch den Weg mit ::SendMessage(...) gewählt. _________________ ...längre blomstre gamle nord... |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|