Mobile SDK for Windows Apps 1.0
Extending Windows Apps for Mobile
cmp.h
Go to the documentation of this file.
00001 
00011 #pragma once
00012 
00013 // only include the definitions if CMPCOM.h has not been loaded already
00014 #ifndef __cmpcom_h__
00015 #include <cmptypes.h>
00016 #include <cmpcap.h>
00017 #include <cmpenum.h>
00018 #include <cmpflags.h>
00019 #include <cmpstruct.h>
00020 #endif
00021 
00022 #include <OleAuto.h>
00023 #include <cmpresult.h>
00024 
00025 // everything in this file assumes C naming conventions
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030 
00031 // defines
00032 
00033 // all of our API are based on standard call, just like WINAPI
00034 #define CMPCALL     __stdcall
00035 #define CMPAPI      CMPCALL
00036 #define CMPEXPORT   __declspec(dllexport)
00037 #define CMPIMPORT   __declspec(dllimport)
00038 
00039 #define CMPAPIENTRY CMPEXPORT CMPRESULT CMPCALL
00040 
00041 typedef char *UTF8_STRING;
00042 
00043 // event handler callback
00044 typedef PVOID CMP_EVENT_CALLBACK;
00045 
00046 #define CMP_VERSION_MAJOR       1
00047 #define CMP_VERSION_MINOR       0
00048 
00069 #ifdef CMPCOM
00070 [export]
00071 #endif
00072 struct CMP_FILEVERSION
00073 {
00074     USHORT      Major;
00075     USHORT      Minor;
00076     USHORT      Build;
00077     USHORT      Revision;
00078 };
00079 
00080 #ifndef __cplusplus
00081 typedef struct CMP_FILEVERSION CMP_FILEVERSION;
00082 #endif
00083 
00113 #ifdef CMPCOM
00114 [export, public]
00115 #endif
00116 typedef struct CMP_VERSION
00117 {
00118     USHORT          CMPAPI_Major;
00119     USHORT          CMPAPI_Minor;
00120     LPCSTR          CMPAPI_BuildDate;
00121 
00122     LPCSTR          CMPAPIDLL_Name;
00123     CMP_FILEVERSION CMPAPIDLL;
00124 
00125     LPCSTR          CMPCOMDLL_Name;
00126     CMP_FILEVERSION CMPCOMDLL;
00127 
00128 } CMP_VERSION;
00129 
00130 
00131 /*
00132  * CMPInitialize - initialize the COM threading model
00133  */
00134 CMPAPIENTRY CMPInitialize(BOOL MultiThreaded);
00135 CMPAPIENTRY CMPUninitialize();
00136 
00137 // Open/Close
00138 CMPAPIENTRY CMPOpen(HANDLE *phCMP);
00139 CMPAPIENTRY CMPClose(HANDLE hCMP);
00140 
00141 // Version
00142 CMPAPIENTRY CMPGetAPIVersion(HANDLE hCMP, CMP_VERSION *cmpVersion);
00143 CMPAPIENTRY CMPGetDLLPath(HANDLE hCMP, LPCSTR DLLfilename, LPSTR DLLfilepath, UINT32 pathLength);
00144 
00145 // CMP Process
00146 CMPAPIENTRY CMPProcessDetect(HANDLE hCMP, DWORD processId, PBOOL detectFlag);
00147 CMPAPIENTRY CMPRegisterProcess(HANDLE hCMP, DWORD processId);
00148 CMPAPIENTRY CMPUnregisterProcess(HANDLE hCMP, DWORD processId);
00149 
00150 // Session
00151 CMPAPIENTRY CMPOpenSession(HANDLE hCMP);
00152 CMPAPIENTRY CMPCloseSession(HANDLE hCMP);
00153 CMPAPIENTRY CMPSetSessionOptionBool(HANDLE hCMP, CMP_SESSION_OPTION option, BOOL value);
00154 CMPAPIENTRY CMPGetSessionOptionBool(HANDLE hCMP, CMP_SESSION_OPTION option, BOOL *value);
00155 CMPAPIENTRY CMPGetSessionState(HANDLE hCMP, CMP_SESSION_STATE* sessionState);
00156 
00157 // Button
00158 CMPAPIENTRY CMPGetButtonTarget(HANDLE hCMP, CMP_BUTTON_ID buttonId, CMP_BUTTON_TARGET* buttonTarget);
00159 CMPAPIENTRY CMPSetButtonTarget(HANDLE hCMP, CMP_BUTTON_ID buttonId, CMP_BUTTON_TARGET buttonTarget);
00160 
00161 // Camera
00162 CMPAPIENTRY CMPTakePicture(HANDLE hCMP, CMP_UNIQUE_ID pictureId, CMP_IMAGE_FORMAT imageFormat);
00163 CMPAPIENTRY CMPGetPictureFilename(HANDLE hCMP, CMP_UNIQUE_ID pictureId, UTF8_STRING filename, UINT32 bufferLength, PUINT32 returnedLength);
00164 CMPAPIENTRY CMPGetPictureState(HANDLE hCMP, CMP_UNIQUE_ID pictureId, PUINT32 size, CMP_PICTURE_STATE *pictState);
00165 CMPAPIENTRY CMPRemovePicture(HANDLE hCMP, CMP_UNIQUE_ID pictureId);
00166 
00167 // Controls
00168 CMPAPIENTRY CMPGetControlsFlags(HANDLE hCMP, PUINT16 controlFlags);
00169 CMPAPIENTRY CMPDisableControls(HANDLE hCMP);
00170 CMPAPIENTRY CMPEnableControls(HANDLE hCMP);
00171 
00172 // Device
00173 CMPAPIENTRY CMPGetDevicePropertyBool(HANDLE hCMP, CMP_DEV_BOOL_PROP_ID propertyId, PBOOL value);
00174 CMPAPIENTRY CMPGetDevicePropertyString(HANDLE hCMP, CMP_DEV_STRING_PROP_ID propertyId, UTF8_STRING propertyString, 
00175                                             UINT32 propertyBufferSize, PUINT32 returnedSize);
00176 
00177 // Display
00178 CMPAPIENTRY CMPGetOrientation(HANDLE hCMP, CMP_ORIENTATION_DATA* orientationData);
00179 CMPAPIENTRY CMPSetOrientation(HANDLE hCMP, CMP_ORIENTATION_POSITION orientation, UINT16 orientationFlags);
00180 CMPAPIENTRY CMPGetScrollMode(HANDLE hCMP, CMP_SCROLL_MODE* scrollMode);
00181 CMPAPIENTRY CMPSetScrollMode(HANDLE hCMP, CMP_SCROLL_MODE scrollMode);
00182 CMPAPIENTRY CMPGetDisplaySettings(HANDLE hCMP, CMP_DISPLAY_SETTINGS* dispSettings);
00183 CMPAPIENTRY CMPGetViewportOrigin(HANDLE hCMP, CMP_DISPLAY_POINT* pt);
00184 CMPAPIENTRY CMPSetViewportOrigin(HANDLE hCMP, CMP_DISPLAY_POINT* pt, UINT16 viewportFlags);
00185 CMPAPIENTRY CMPGetViewport(HANDLE hCMP, INT16 *flags, INT16 *zoomFactor, CMP_DISPLAY_RECT* serverViewport, CMP_DISPLAY_RECT *clientViewport);
00186 CMPAPIENTRY CMPSetViewport(HANDLE hCMP, INT16 flags, INT16 zoomFactor, CMP_DISPLAY_RECT* serverViewport);
00187 
00188 
00189 // Keyboard
00190 CMPAPIENTRY CMPGetKeyboardState(HANDLE hCMP, CMP_KEYBOARD_STATE* kybdState);
00191 CMPAPIENTRY CMPShowKeyboard(HANDLE hCMP, CMP_KEYBOARD_STATE* kybdState);
00192 CMPAPIENTRY CMPHideKeyboard(HANDLE hCMP);
00193 
00194 // Message
00195 CMPAPIENTRY CMPSendSMS(HANDLE hCMP, UTF8_STRING phoneNumber, CMP_UNIQUE_ID msgId, UTF8_STRING SMSText);
00196 
00197 // Phone
00198 CMPAPIENTRY CMPStartCall(HANDLE hCMP, UTF8_STRING phoneNumber, CMP_UNIQUE_ID callId);
00199 
00200 // Picker
00201 CMPAPIENTRY CMPShowPicker(HANDLE hCMP, CMP_UNIQUE_ID controlId, CMP_DISPLAY_RECT* rect, UINT32 selectedIndex,
00202                           UINT32 listItemsCount, UTF8_STRING listItems, UTF8_STRING title);
00203 CMPAPIENTRY CMPShowPickerUTF16(HANDLE hCMP, CMP_UNIQUE_ID controlId, CMP_DISPLAY_RECT* rect, UINT32 selectedIndex,
00204                                UINT32 listItemsCount, LPCWSTR listItems, LPCWSTR title);
00205 CMPAPIENTRY CMPHidePicker(HANDLE hCMP, CMP_UNIQUE_ID controlId);
00206 CMPAPIENTRY CMPGetPickerState(HANDLE hCMP, CMP_UNIQUE_ID controlId, PUINT16 pickerState);
00207 
00208 // capabilities
00209 CMPAPIENTRY CMPGetCapabilityBool(HANDLE hCMP,   CMP_CAP_ID capID, UINT16 keyId, PBOOL   value);
00210 CMPAPIENTRY CMPGetCapabilityInt16(HANDLE hCMP,  CMP_CAP_ID CapID, UINT16 KeyId, PINT16 Value);
00211 CMPAPIENTRY CMPGetCapabilityUInt16(HANDLE hCMP, CMP_CAP_ID capID, UINT16 keyId, PUINT16 value);
00212 CMPAPIENTRY CMPGetCapabilityInt32(HANDLE hCMP,  CMP_CAP_ID capID, UINT16 keyId, PINT32  value);
00213 CMPAPIENTRY CMPGetCapabilityUInt32(HANDLE hCMP, CMP_CAP_ID capID, UINT16 keyId, PUINT32 value);
00214 
00215 // notification
00216 CMPAPIENTRY CMPNotifyUser(HANDLE hCMP, CMP_UNIQUE_ID notificationId, USHORT notificationFlags, UTF8_STRING notificationText);
00217 
00218 // channel
00219 CMPAPIENTRY CMPGetChannelState(HANDLE hCMP, CMP_CHANNEL_STATE* state);
00220 
00221 // Events
00222 CMPAPIENTRY CMPFilterEvent(HANDLE hCMP, CMP_EVENT_ID eventId, UINT16 filterFlags);
00223 
00224 // generic event handler register/unregister
00225 CMPAPIENTRY CMPRegisterForEvent(HANDLE hCMP, CMP_EVENT_ID eventId, CMP_EVENT_CALLBACK eventHandler);
00226 CMPAPIENTRY CMPUnregisterForEvent(HANDLE hCMP, CMP_EVENT_ID eventId, CMP_EVENT_CALLBACK eventHandler);
00227 
00228 // Event callbacks
00229 typedef void (CMPCALL *PFN_EVENT_BUTTON_PRESSED) (HANDLE hCMP, CMP_BUTTON_ID buttonId);
00230 typedef void (CMPCALL *PFN_EVENT_DISPLAY_SETTINGS_CHANGED) (HANDLE hCMP, INT16 MetricFlags, INT32 pixelWidth, INT32 pixelHeight,
00231                                         INT16 colorDepth, INT32 XPixelsPerInch, INT32 YPixelsPerInch,
00232                                         CMP_ORIENTATION_POSITION orientation, INT32 WidthMilliInches, INT32 HeightMilliInches,
00233                                         INT32 NormalizedDPI);
00234 typedef void (CMPCALL *PFN_EVENT_ORIENTATION_CHANGED)(HANDLE hCMP, CMPRESULT rc, CMP_ORIENTATION_POSITION deviceOrientation,
00235                    CMP_ORIENTATION_POSITION appOrientation, UINT16 orientationFlags);
00236 typedef void (CMPCALL *PFN_EVENT_SCROLL_MODE_CHANGED)(HANDLE hCMP, CMPRESULT rc, CMP_SCROLL_MODE scrollMode);
00237 typedef void (CMPCALL *PFN_EVENT_KEYBOARD_STATE_CHANGED)(HANDLE hCMP, CMPRESULT rc, CMP_KEYBOARD_TYPE keyboardType, 
00238                    INT16 keyboardStateFlags, CMP_KEYBOARD_AUTOCAPS kybdAutoCap, CMP_KEYBOARD_RETURNKEY kybdReturnKey);
00239 typedef void (CMPCALL *PFN_EVENT_VIEWPORT_ORIGIN_CHANGED)(HANDLE hCMP, CMPRESULT rc, INT32 left, INT32 top);
00240 typedef void (CMPCALL *PFN_EVENT_VIEWPORT_CHANGED)(HANDLE hCMP, CMPRESULT rc, INT16 flags, INT16 zoomFactor, 
00241                                          INT32 x0Server, INT32 y0Server, INT32 x1Server, INT32 y1Server,
00242                                          INT32 x0Client, INT32 y0Client, INT32 x1Client, INT32 y1Client);
00243 typedef void (CMPCALL *PFN_EVENT_BUTTON_TARGET_CHANGED)(HANDLE hCMP, CMPRESULT rc, CMP_BUTTON_ID buttonId, CMP_BUTTON_TARGET buttonTarget);
00244 typedef void (CMPCALL *PFN_EVENT_CONTROL_STATE_CHANGED)(HANDLE hCMP, CMPRESULT rc, UINT16 controlStateFlags);
00245 typedef void (CMPCALL *PFN_EVENT_SMS_STARTED)(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID SMSId);
00246 typedef void (CMPCALL *PFN_EVENT_PHONE_CALL_STARTED)(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID phoneCallId);
00247 typedef void (CMPCALL *PFN_EVENT_PICKER_CONTROL_STATE_CHANGED)(HANDLE hCMP, CMP_UNIQUE_ID pickerId, INT16 pickerStateFlags, CMPRESULT rc, INT16 selectedIndex);
00248 typedef void (CMPCALL *PFN_EVENT_CAMERA_PICTURE_TAKEN)(HANDLE hCMP, CMPRESULT result, CMP_UNIQUE_ID pictureId, 
00249                                                        CMP_IMAGE_FORMAT pictureFormat, UINT32 pictureSize, UTF8_STRING filename);
00250 typedef void (CMPCALL *PFN_EVENT_FILTER_CHANGED)(HANDLE hCMP, CMPRESULT rc, CMP_EVENT_ID eventId, INT16 filterFlags);
00251 typedef void (CMPCALL *PFN_EVENT_USER_NOTIFIED)(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID notificationId);
00252 typedef void (CMPCALL *PFN_EVENT_CAMERA_PICTURE_REMOVED)(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID pictureId);
00253 typedef void (CMPCALL *PFN_EVENT_SESSION_STATE_CHANGED)(HANDLE hCMP, CMP_SESSION_STATE state);
00254 typedef void (CMPCALL *PFN_EVENT_CHANNEL_STATE_CHANGED)(HANDLE hCMP, CMP_CHANNEL_STATE state);
00255 
00256 // Event prototypes (only for documentation)
00257 
00268 void CMPCALL ButtonPressed(HANDLE hCMP, CMP_BUTTON_ID buttonId);
00269 
00292 void CMPCALL DisplaySettingsChanged(HANDLE hCMP, INT16 MetricFlags, INT32 pixelWidth, INT32 pixelHeight,
00293                             INT16 colorDepth, INT32 XPixelsPerInch, INT32 YPixelsPerInch,
00294                             CMP_ORIENTATION_POSITION orientation, INT32 WidthMilliInches, INT32 HeightMilliInches,
00295                             INT32 normalizedDPI);
00296 
00311 void CMPCALL OrientationChanged(HANDLE hCMP, CMPRESULT rc, CMP_ORIENTATION_POSITION deviceOrientation,
00312                                 CMP_ORIENTATION_POSITION appOrientation, UINT16 orientationFlags);
00313 
00325 void CMPCALL ScrollModeChanged(HANDLE hCMP, CMPRESULT rc, CMP_SCROLL_MODE scrollMode);
00326 
00343 void CMPCALL KeyboardStateChanged(HANDLE hCMP, CMPRESULT rc, CMP_KEYBOARD_TYPE keyboardType, 
00344                                   INT16 keyboardStateFlags, CMP_KEYBOARD_AUTOCAPS kybdAutoCap, 
00345                                   CMP_KEYBOARD_RETURNKEY kybdReturnKey);
00346 
00359 void CMPCALL ViewportOriginChanged(HANDLE hCMP, CMPRESULT rc, INT32 left, INT32 top);
00360 
00373 void CMPCALL ButtonTargetChanged(HANDLE hCMP, CMPRESULT rc, CMP_BUTTON_ID buttonId, CMP_BUTTON_TARGET buttonTarget);
00374 
00386 void CMPCALL ControlStateChanged(HANDLE hCMP, CMPRESULT rc, UINT16 controlStateFlags);
00387 
00399 void CMPCALL SMSStarted(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID SMSId);
00400 
00412 void CMPCALL PhoneCallStarted(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID phoneCallId);
00413 
00427 void CMPCALL PickerControlStateChanged(HANDLE hCMP, CMP_UNIQUE_ID pickerId, INT16 pickerStateFlags, CMPRESULT rc, INT16 selectedIndex);
00428 
00444 void CMPCALL PictureTaken(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID pictureId, 
00445                           CMP_IMAGE_FORMAT pictureFormat, UINT32 pictureSize, UTF8_STRING filename);
00446 
00459 void CMPCALL FilterChanged(HANDLE hCMP, CMPRESULT rc, CMP_EVENT_ID eventId, INT16 filterFlags);
00460 
00472 void CMPCALL UserNotified(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID notificationId);
00473 
00485 void CMPCALL PictureRemoved(HANDLE hCMP, CMPRESULT rc, CMP_UNIQUE_ID pictureId);
00486 
00497 void CMPCALL SessionStateChanged(HANDLE hCMP, CMP_SESSION_STATE state);
00498 
00509 void CMPCALL ChannelStateChanged(HANDLE hCMP, CMP_CHANNEL_STATE state);
00510 
00511 
00534 void CMPCALL ViewportChanged(HANDLE hCMP, CMPRESULT rc, INT16 flags, INT16 zoomFactor, 
00535                              INT32 x0Server, INT32 y0Server, INT32 x1Server, INT32 y1Server,
00536                              INT32 x0Client, INT32 y0Client, INT32 x1Client, INT32 y1Client);
00537 
00538 // conversion routines
00539 CMPAPIENTRY UTF16ToUTF8(LPCWSTR wStr, INT32 wStrLen, UTF8_STRING string, UINT32 bufferSize, UINT32 *stringSize);
00540 CMPAPIENTRY UTF8ToBSTR(UTF8_STRING string, INT32 length, BSTR *bStr);
00541 
00542 // multistring
00543 CMPAPIENTRY GetUTF8MultiStringLength(UTF8_STRING str, UINT32* length);
00544 CMPAPIENTRY GetUTF16MultiStringLength(LPCWSTR str, UINT32* length);
00545 CMPAPIENTRY GetUTF16ToUTF8MultiStringLength(LPCWSTR str, UINT32* length);
00546 CMPAPIENTRY UTF8MultiStringToBSTR(UTF8_STRING utf8MultiString, BSTR *bStr);
00547 CMPAPIENTRY UTF16ToUTF8MultiString(LPCWSTR wStr, UTF8_STRING multiString, UINT32 stringBufferSize, UINT32* stringSize);
00548 CMPAPIENTRY BSTRSafearrayToBSTR(SAFEARRAY *psa, BSTR *bstr);
00549 
00550 // length
00551 CMPAPIENTRY UTF8ToUTF16Length(UTF8_STRING utf8String, UINT32* length);
00552 CMPAPIENTRY UTF16ToUTF8Length(LPCWSTR wString, UINT32* length);
00553 
00554 
00555 #ifdef __cplusplus
00556 // end EXTERN "C"
00557 }
00558 #endif
00559 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Events Defines