R
moin meister ...
der entgültige Code sieht jetzt so erst mal aus.
bool IsCanceled(UINT idBtnCancel, HWND hDlg)
{
bool canceled = false;
static bool bDown = false;
RECT rc;
MSG msg;
if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
{
TranslateMessage(&msg);
if( msg.hwnd == GetDlgItem(hDlg, idBtnCancel) )
// wurde Taste der Mous über der Schaltfläche gedrückt ?
if( msg.message == WM_LBUTTONDOWN )
// ja: Merker setzen
bDown = true;
// wird die Taste der Mous über der Schaltfläche gelöst und wurde sie vorher gedrückt ?
if( msg.message == WM_LBUTTONUP && bDown)
{
// ja:
// Koordinaten konvertieren
ScreenToClient(msg.hwnd, &msg.pt);
// Bereich des Clients holen
GetClientRect(msg.hwnd, &rc);
// Mouse wurde über Client losgelassen
if( PtInRect(&rc, msg.pt) )
// Aktion soll abgebrochen werden
canceled = true;
// Merker zurücksetzen, weil static
bDown = false;
}
DispatchMessage(&msg);
}
return canceled;
}
weiter oben hatte ich mal den Code gezeigt für PalmOS.
Ich möchte gern Programme für PalmOS und WinCE schreiben, wobei bei der Programmierung selbst eigentlich keine großen Unterschiede mehr anfallen sollen.
Wenn ich diese Funktionalität nur für Win bräuchte würde ich mir diese Umständliche Lösung nicht aufhalsen.
Nur PalmOS verarbeitet Nachrichten nicht ganz so wie Windows. Es gibt auch keine Threads, hier gäbe es für Win eine einfache Lösung.
Unter PalmOS kann man daher eine "Endlosschleife" nicht abbrechen, oder man verwendet eine Funktion in der Schleife wie weiter oben in einem Beitrag
aufgezeigt ist.
Jetz der Compatible Code für Win und Palm
for(int i=0; i<MAX && !IsDialogCanceled(...); i++)
machewas()
wobei machewas in ANSI-C oder so gepinselt ist und eh "platformunabhänig" ist.
So werde ich die Geister von J2ME die ich rief wieder los !!!
Wenn wer schon mal mit J2ME (JAVA für Handys) gearbeitet hat, wird feststellen,
das Java mit sehr viel Glück platformunabhängig sein kann aber niemals Geräteunabhängig sein wird
Zumindest häufen sich die Stellenangebote:
"Suche J2ME-Programmierer der Siemens-Spiele auf Nokia portiert"
Seit wann wird platformunabhängige Software auf andere (Fremdfirmen)Platformen portiert ? Da stimmt doch was nicht !!!
Auch Tool wie AppForge ( VB für Palm/WinCE ) bewegen sich auf dem schmalen Grad
des kleinsten gemeinsamen Nenners und sind keine Alternative.
Die obige Problematik mit der Schleife ist nicht zu lösen, da Appforge viel zu träge ist. Die Schleife soll aber abgebrochen werden wen Cancel gedrückt wird und nicht 3 Minuten Später ...
mfg
RB