Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Mostrare un Hourglass sul palmare con il Compact Framework

Se il software che state sviluppando per un dispositivo mobile compie un'operazione lunga, potete mostrare sullo schermo una clessidra - l'Hourglass dell'oggetto di questo post. Con Windows Mobile 5.0, questa clessidra in realtà è un piccolo cerchio centrato sullo schermo, diviso in 4 settori colorati (rosso/giallo/blu/verde). Ovviamente tale clessidra non è modale, perciò il vostro codice prosegue l'esecuzione fino a quando non siete voi a decidere che la clessidra non è più necessaria. Un'altra piccola precisazione: su palmari non avete il concetto di puntatore del mouse, perciò non potete fare quello che è possibile con il .NET Framework standard, ovvero cambiare il puntatore solo su un controllo che volete voi. Difatti, la visualizzazione della clessidra è consentita solo al centro dello schermo.

Come farlo nelle vostre applicazioni per palmari? Seguite la ricetta che ho preparato per voi.

Ingredienti per uno sviluppatore (difficoltà bassa)
Una costante di tipo int
Due funzioni extern static importate dalla coredll.dll
Una funzione managed con un parametro di tipo bool e ritorna void

Preparazione
Prendete una Windows Form, e dichiarate quanto segue:

private const int HourGlassCursorID = 32514; [DllImport("coredll.dll")] private extern static int LoadCursor(int zeroValue, int cursorID); [DllImport("coredll.dll")] private extern static int SetCursor(int cursorHandle);

Lasciar cuocere 1 minuto a fuoco lento. La costante è di tipo int e deve valere 32514, equivalente a 0x7F02. Poi vengono dichiarate due funzioni extern, tramite P/Invoke, entrambe definite nella library coredll.dll. La funzione LoadCursor carica un cursore dato un cursorID; il cursore viene ritornato da un tipo int che è un cursorHandle.
Quello che manca è la funzione managed:

private void ShowWaitCursor(bool ShowCursor) { int cursorHandle = 0; if (ShowCursor) { cursorHandle = LoadCursor(0, HourGlassCursorID); } SetCursor(cursorHandle); }

Dare una mescolata con un cucchiaio di legno. La vostra applicazione può tranquillamente utilizzare la funzione ShowWaitCursor per visualizzare/nascondere la clessidra sul display del palmare. Attenzione, come dicevo prima, la clessidra, indipendentemente dalla forma che assume, non è modale, perciò, per esempio, potete scrivere quanto segue:

private void btnMioBottone_Click(object sender, EventArgs e) { ShowWaitCursor(true); /* Faccio 1.000 cose che durano un po' */ ShowWaitCursor(false); }

Ricordatevi sempre ed in ogni caso di disattivare la clessidra, altrimenti questa rimane visibile sullo schermo anche se l'applicazione continua a funzionare regolarmente, ma disturbando notevolmente la digestione dell'utente.

Da servire freddo, magari con un buon vino del Friuli. :-)
Buon appetito.

Print | posted on Wednesday, April 11, 2007 12:08 PM | Filed Under [ Sviluppo .NET ]

Feedback

Gravatar

# Re: Mostrare un Hourglass sul palmare con il Compact Framework

credo che lo smart device framework alla fine non faccia altro che fare quello che ho fatto io. Finchè il mal di testa non mi arriva, preferisco avere il controllo...
4/11/2007 12:57 PM | Igor Damiani
Gravatar

# re: Mostrare un Hourglass sul palmare con il Compact Framework

Mi allaccio a Roberto:

Cursor.Current=Cursors.WaitCursor
.
.
Cursor.Current=Cursors.Default

Ciao
4/11/2007 1:11 PM | Simone
Gravatar

# re: Mostrare un Hourglass sul palmare con il Compact Framework

Quoto Roberto, mai reinventare la ruota... anche se il post stile ricetta è imperdibile :)
4/11/2007 1:21 PM | Diego Guidi
Gravatar

# re: Mostrare un Hourglass sul palmare con il Compact Framework

Però è una buona scusa per bersi un buon vino del Friuli :)
4/11/2007 2:17 PM | Pippo
Gravatar

# [Compact Framework] Spegnere la scheda WiFi

4/11/2007 6:20 PM | dotnethoughts
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET