Wenn Sie Microsoft Foundation Classes benutzen, um Ihre Anwendung zu entwickeln, können Sie die Synchronisationsnachricht in der Hauptdialogfeldklasse oder in Ihrer Anwendungsklasse abfangen. Beide Methoden werden hier beschrieben.
Ihre Anwendung muss zur Benachrichtigung einen benutzerdefinierten Windows-Klassennamen erstellen und registrieren. Weitere Hinweise finden Sie unter Klassennamen für Anwendungen zuordnen.
Fügen Sie eine registrierte Nachricht hinzu und deklarieren Sie einen Message-Handler.
Suchen Sie die Nachrichtenzuordnung in der Quelldatei Ihres Hauptdialogfeldes (der Name hat das gleiche Format wie CMyAppDlg.cpp). Fügen Sie eine registrierte Nachricht hinzu, indem Sie static verwenden, und deklarieren Sie einen Message-Handler, indem Sie ON_REGISTERED_MESSAGE verwenden, wie im folgenden Beispiel:
static UINT WM_ULTRALITE_SYNC_MESSAGE = ::RegisterWindowMessage( UL_AS_SYNCHRONIZE ); BEGIN_MESSAGE_MAP(CMyAppDlg, CDialog) //{{AFX_MSG_MAP(CMyAppDlg) //}}AFX_MSG_MAP ON_REGISTERED_MESSAGE( WM_ULTRALITE_SYNC_MESSAGE, OnDoUltraLiteSync ) END_MESSAGE_MAP() |
Implementieren Sie den Message-Handler.
Fügen Sie der Hauptdialogfeldklasse mit der folgenden Signatur eine Methode hinzu. Diese Methode wird automatisch immer dann ausgeführt, wenn der MobiLink-Provider für ActiveSync eine Synchronisation von Ihrer Anwendung anfordert. Die Methode muss ULSynchronize aufrufen.
LRESULT CMyAppDlg::OnDoUltraLiteSync( WPARAM wParam, LPARAM lParam ); |
Der Rückgabewert dieser Funktion muss 0 sein.
Weitere Hinweise zum Verarbeiten der Synchronisationsnachricht finden Sie unter ULIsSynchronizeMessage-Funktion.
Öffnen Sie den Klassenassistenten für die Anwendungsklasse.
Markieren Sie PreTranslateMessage in der Liste Nachrichten und klicken Sie auf die Schaltfläche Funktion hinzufügen.
Klicken Sie auf Code bearbeiten. Die PreTranslateMessage-Funktion erscheint. Ändern Sie sie folgendermaßen:
BOOL CMyApp::PreTranslateMessage(MSG* pMsg) { if( ULIsSynchronizeMessage(pMsg->message) ) { DoSync(); // close application if launched by provider if( pMsg->wParam == 1 ) { ASSERT( AfxGetMainWnd() != NULL ); AfxGetMainWnd()->SendMessage( WM_CLOSE ); } return TRUE; // message has been processed } return CWinApp::PreTranslateMessage(pMsg); } |
Dabei ist DoSync die Funktion, die ULSynchronize aufruft.
Weitere Hinweise zum Verarbeiten der Synchronisationsnachricht finden Sie unter ULIsSynchronizeMessage-Funktion.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |