Handling Connection Status Notifications (Windows Embedded CE 6.0)
1/6/2010
This topic describes how an application can handle connection-status notifications from Connection Manager after the application has established a connection.
To complete this task, you must have completed the previous steps in Making a Data Connection Using Connection Manager.
To handle connection-status notifications in a connected application
After a connection is already established in your application code, call ConnMgrConnectionStatus to retrieve the current connection status. The current status is returned in pdwStatus.
Post a custom message to the main window, such as WM_CONNECTIONSTATE, that includes the value of pdwStatus in one of its parameters. **You can do this by calling PostMessage and passing in a handle to the main application window.
In your WndProc, provide message-handling code for WM_CONNECTIONSTATE that handles states such as the following:
- CONNMGR_STATUS_DISCONNECTED
- CONNMGR_STATUS_SUSPENDED
- CONNMGR_STATUS_CONNECTIONCANCELED
- CONNMGR_STATUS_CONNECTIONDISABLED
- CONNMGR_STATUS_WAITINGCONNECTION
- CONNMGR_STATUS_WAITINGDISCONNECTION
For a list of values, see Connection Manager Status Constants.
Rebuild your application.
Example
The following code example shows you how to retrieve the updated connection status and post a message to the main window that contains the updated status information.
#include <windows.h>
#include <connmgr.h>
CONNMGR_CONNECTIONINFO ConnInfo = { 0 };
ConnInfo.cbSize = SIZEOF(ConnInfo);
ConnInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
ConnInfo.dwFlags = 0;
ConnInfo.dwPriority = (m_fInteractive ? CONNMGR_PRIORITY_USERINTERACTIVE : CONNMGR_PRIORITY_HIPRIBKGND);
ConnInfo.guidDestNet= m_guidCurrentPath;
ConnInfo.hWnd = m_hWndNotify;
ConnInfo.uMsg = WM_CONNECTSTATE;
HANDLE hConnection = NULL;
HRESULT hr = ConnMgrEstablishConnection(&ConnInfo, &hConnection);
The following code example shows you how to handle a connection-status message within the callback function for the main window of your application.
LRESULT CALLBACK WndProc (HWND hwnd, UINT umsg, WPARAM wParam,
LPARAM lParam)
{
switch (umsg)
{
case WM_CONNECTSTATE:
{
// Status is in wParam.
if(wParam == CONNMGR_STATUS_CONNECTED)
{
// Status is connected. Post connected-related messages as
// needed.
}
else if ((wParam != CONNMGR_STATUS_WAITINGCONNECTION) &&
(wParam != CONNMGR_STATUS_WAITINGFORRESOURCE) &&
(wParam & (CONNMGR_STATUS_WAITINGCONNECTION |
CONNMGR_STATUS_DISCONNECTED)))
{
if(wParam != CONNMGR_STATUS_DISCONNECTED)
{
// Log an error
}
else
{
// Write code to notify application of waiting status.
}
}
}
case WM_CLOSE:
DestroyWindow (hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd, umsg, wParam, lParam);
}
See Also
Tasks
Establishing an Internet Connection Using Connection Manager
Concepts
Connection Manager How-to Topics