Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » Ultra Light C/C++ プログラミング » アプリケーション開発 » Windows Mobile 向け Ultra Light アプリケーション開発 » Windows Mobile の同期

 

ActiveSync 同期の追加 (MFC の場合)

 ♦ メインダイアログクラスでの ActiveSync 同期の追加

Microsoft Foundation Classes を使用してアプリケーションを開発している場合は、メインダイアログクラスかアプリケーションクラスで同期メッセージを取得できます。

メッセージの通知用に、アプリケーションのカスタムウィンドウクラス名を作成し、登録しておいてください。

  1. 登録したメッセージを追加し、メッセージハンドラーを宣言します。

    メインダイアログのソースファイルでメッセージマップを検索します (名前は CMyAppDlg.cpp と同じ形式です)。次の例のように、登録したメッセージを static を使用して追加し、メッセージハンドラーを ON_REGISTERED_MESSAGE を使用して宣言します。

    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()
  2. メッセージハンドラーを実装します。

    次のシグネチャーで、メインダイアログクラスにメソッドを追加します。ActiveSync 用 Mobile Link プロバイダーがアプリケーションの同期を要求するときは、常にこのメソッドが自動的に実行されます。このメソッドで、ULSynchronize を呼び出してください。

    LRESULT CMyAppDlg::OnDoUltraLiteSync(
       WPARAM wParam,
       LPARAM lParam
    );

    この関数の戻り値は 0 にしてください。

 ♦ アプリケーションクラスでの ActiveSync 同期の追加

Microsoft Foundation Classes を使用してアプリケーションを開発している場合は、メインダイアログクラスかアプリケーションクラスで同期メッセージを取得できます。

メッセージの通知用に、アプリケーションのカスタムウィンドウクラス名を作成し、登録しておいてください。

  1. アプリケーションクラスのクラスウィザードを開きます。

  2. [メッセージ] リストで、PreTranslateMessage を強調表示して [関数の追加] をクリックします。

  3. [コードの編集] をクリックします。PreTranslateMessage 関数が表示されます。それを次のように変更します。



    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);
    }

    DoSync は実際に ULSynchronize を呼び出す関数です。

 参照