如果使用 Microsoft 基础类开发应用程序,则可在主对话框类或应用程序类中捕获同步消息。
应用程序必须创建和注册自定义窗口类名才能发出通知。
添加注册消息,并声明消息处理程序。
在主对话框的源文件(名称为 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 的 MobiLink 提供程序请求应用程序进行同步时,该方法都会自动执行。此方法应调用 ULSynchronize。
LRESULT CMyAppDlg::OnDoUltraLiteSync( WPARAM wParam, LPARAM lParam ); |
此函数的返回值应为 0。
如果使用 Microsoft 基础类开发应用程序,则可在主对话框类或应用程序类中捕获同步消息。
应用程序必须创建和注册自定义窗口类名才能发出通知。
打开应用程序类的 [Class Wizard]。
在 [Messages] 列表中,选中 [PreTranslateMessage],然后单击 [Add Function]。
单击 [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 的函数。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |