Microsoft Foundation Classes を使用してアプリケーションを開発している場合は、メインダイアログクラスかアプリケーションクラスで同期メッセージを取得できます。
メッセージの通知用に、アプリケーションのカスタムウィンドウクラス名を作成し、登録しておいてください。
登録したメッセージを追加し、メッセージハンドラーを宣言します。
メインダイアログのソースファイルでメッセージマップを検索します (名前は 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() |
メッセージハンドラーを実装します。
次のシグネチャーで、メインダイアログクラスにメソッドを追加します。ActiveSync 用 Mobile Link プロバイダーがアプリケーションの同期を要求するときは、常にこのメソッドが自動的に実行されます。このメソッドで、ULSynchronize を呼び出してください。
LRESULT CMyAppDlg::OnDoUltraLiteSync( WPARAM wParam, LPARAM lParam ); |
この関数の戻り値は 0 にしてください。
Microsoft Foundation Classes を使用してアプリケーションを開発している場合は、メインダイアログクラスかアプリケーションクラスで同期メッセージを取得できます。
メッセージの通知用に、アプリケーションのカスタムウィンドウクラス名を作成し、登録しておいてください。
アプリケーションクラスのクラスウィザードを開きます。
[メッセージ] リストで、PreTranslateMessage を強調表示して [関数の追加] をクリックします。
[コードの編集] をクリックします。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 を呼び出す関数です。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |