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

SQL Anywhere 11.0.1 (日本語) » Ultra Light - C/C++ プログラミング » アプリケーション開発 » Windows Mobile 用 Ultra Light アプリケーションの開発 » Windows Mobile での同期

 

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

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

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

♦  メイン・ダイアログ・クラスで ActiveSync 同期を追加するには、次の手順に従います。
  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 にしてください。

    同期メッセージの処理の詳細については、ULIsSynchronizeMessage 関数を参照してください。

♦  アプリケーション・クラスで ActiveSync 同期を追加するには、次の手順に従います。
  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 を呼び出す関数です。

    同期メッセージの処理の詳細については、ULIsSynchronizeMessage 関数を参照してください。