|
Mobile SDK for Windows Apps 1.0
Extending Windows Apps for Mobile
|
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