CODE
static void WaitManage(Boolean bShow)
{
static FormPtr waitform;
static WinHandle winActive;
static FormActiveStateType theFormState;
// Show wait dialog
if (bShow)
{
// Sauvegarde de l'état de la fenêtre courante
FrmSaveActiveState(&theFormState);
winActive = WinGetDrawWindow();
// Show wait dialog
waitform = FrmInitForm(waitFormID);
if (waitform)
{
FrmSetActiveForm(waitform);
FrmDrawForm(waitform);
// Sony HR
ReplaceBitmapSony(waitform, waitBimpID);
}
}
else
{
// Close wait dialog
if (waitform)
{
FrmEraseForm(waitform);
FrmDeleteForm(waitform);
}
waitform = 0;
// Restaure l'état précédent
WinSetDrawWindow(winActive);
FrmRestoreActiveState(&theFormState);
}
}
{
static FormPtr waitform;
static WinHandle winActive;
static FormActiveStateType theFormState;
// Show wait dialog
if (bShow)
{
// Sauvegarde de l'état de la fenêtre courante
FrmSaveActiveState(&theFormState);
winActive = WinGetDrawWindow();
// Show wait dialog
waitform = FrmInitForm(waitFormID);
if (waitform)
{
FrmSetActiveForm(waitform);
FrmDrawForm(waitform);
// Sony HR
ReplaceBitmapSony(waitform, waitBimpID);
}
}
else
{
// Close wait dialog
if (waitform)
{
FrmEraseForm(waitform);
FrmDeleteForm(waitform);
}
waitform = 0;
// Restaure l'état précédent
WinSetDrawWindow(winActive);
FrmRestoreActiveState(&theFormState);
}
}
Les ressources doivent (évidemment intégrer un dialogue dont l'ID est waitFormID (dans l'exemple) et contenant le message que vous voulez. Pour l'utiliser, appelez simplement WaitManage(true) avant le traitement "long" et appelez WaitManage(false) une fois que ce traitement est terminé.
Attention, certains appels de cette fonction peuvent sembler superflus : ils ne le sont pas. Il y a des différences de comportement selon les versions de PalmOS...
Code inspiré d'un article PeekPocket que je n'arrive plus à retrouver...