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

SQL Anywhere 12.0.1 » UltraLite - C 及 C++ 编程 » 应用程序开发 » Windows Mobile 的 UltraLite 应用程序开发 » Windows Mobile 同步

 

添加 ActiveSync 同步 (MFC)

 ♦ 在主对话框类中添加 ActiveSync 同步

如果使用 Microsoft 基础类开发应用程序,则可在主对话框类或应用程序类中捕获同步消息。

应用程序必须创建和注册自定义窗口类名才能发出通知。

  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 的 MobiLink 提供程序请求应用程序进行同步时,该方法都会自动执行。此方法应调用 ULSynchronize

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

    此函数的返回值应为 0。

 ♦ 在应用程序类中添加 ActiveSync 同步

如果使用 Microsoft 基础类开发应用程序,则可在主对话框类或应用程序类中捕获同步消息。

应用程序必须创建和注册自定义窗口类名才能发出通知。

  1. 打开应用程序类的 [Class Wizard]。

  2. 在 [Messages] 列表中,选中 [PreTranslateMessage],然后单击 [Add Function]。

  3. 单击 [Edit Code]。[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 的函数。

 另请参见