home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / asfc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  28.5 KB  |  849 lines

  1. //--------------------------------------------------------------------------------------------
  2. //
  3. //    Copyright (c) Microsoft Corporation, 1997 All Rights Reserved
  4. //
  5. //    Description:
  6. //        AutoPC Simple Form and Control Interfaces
  7. //
  8. //    History: 
  9. //        Umesh Madan    umeshm@microsoft.com    02/28/97 Created
  10. //
  11. //--------------------------------------------------------------------------------------------
  12.  
  13. #ifndef _ASFC_H
  14. #define _ASFC_H
  15.  
  16. //--------------------------------------------------------------------------------------------
  17. //
  18. // Includes
  19. //
  20. //--------------------------------------------------------------------------------------------
  21. #include <olectl.h>
  22. #include <apcmsg.h>
  23. #include <apcspch.h>
  24. #include <asdisp.h>
  25.  
  26. //--------------------------------------------------------------------------------------------
  27. //
  28. // Messages
  29. //
  30. //--------------------------------------------------------------------------------------------
  31. // The forms manager uses range 0xbf00 to 0xbf7f for APC forms manager messages
  32.  
  33. #define WM_FMBASE            APC_FRM_START      //==0xbf00 from apcmsg.h
  34.  
  35. /*++
  36.     WM_QUERYKEYUSAGE
  37.     =============================
  38.  
  39.     wParam - not used
  40.     lParam - IQueryKeyUsage pointer
  41.            - Message handlers call FlagKeysUsed( QKU_VK_*) of all keys used
  42.  
  43.     Note -  a WM_QUERYKEYUSAGE notification is sent by 
  44.             the nav control to find out what kays are valid to hit
  45.             
  46.             electrical power is removed, Only when it is restored
  47.            
  48. --*/
  49.  
  50. #define        WM_QUERYKEYUSAGE            (WM_FMBASE + 0)
  51.  
  52. // wParam
  53. // lParam  - Call FlagKeysUsed the below params or'ed together
  54.  
  55. // Query Key Usage
  56. #define QKU_VK_LEFT       0x0001
  57. #define QKU_VK_UP         0x0002
  58. #define QKU_VK_RIGHT      0x0004
  59. #define QKU_VK_DOWN       0x0008
  60. #define QKU_VK_RETURN     0x0010
  61.  
  62. /*++
  63.     WM_NOTIFYAPPALERT
  64.     =================
  65.  
  66.     wParam - TRUE if alert was raised, FALSE if cleared
  67.     lParam - rsvd - 0
  68.  
  69.     Posted to the application when an alert is signalled or cleared 
  70.     for the Application name matching the RegisterStartedApplication name
  71. --*/
  72.  
  73. #define        WM_NOTIFYAPPALERT            (WM_FMBASE + 1)
  74. //--------------------------------------------------------------------------------------------
  75. //
  76. // Macros
  77. //
  78. //--------------------------------------------------------------------------------------------
  79. #ifdef __ASFCDLL
  80.  
  81. #ifndef ASFCAPI
  82. #define ASFCAPI            __declspec(dllexport) HRESULT __stdcall
  83. #endif
  84.  
  85. #else
  86.  
  87. #ifndef ASFCAPI
  88. #define ASFCAPI            __declspec(dllimport) HRESULT __stdcall
  89. #endif
  90.  
  91. #endif
  92.  
  93. //--------------------------------------------------------------------------------------------
  94. //
  95. // APIs
  96. //
  97. //--------------------------------------------------------------------------------------------
  98. STDAPI ASFCCreateFont(FONTDESC *pfd, REFIID riid, PVOID *pvFont);
  99.  
  100. //--------------------------------------------------------------------------------------------
  101. //
  102. // Declarations
  103. //
  104. //--------------------------------------------------------------------------------------------
  105. DECLARE_INTERFACE(IASControl);
  106. DECLARE_INTERFACE(IASForm);
  107. DECLARE_INTERFACE(IASActiveForms);
  108. DECLARE_INTERFACE(IfmManage);
  109. DECLARE_INTERFACE(IfmSystem);
  110. DECLARE_INTERFACE(IfmCollection);
  111. DECLARE_INTERFACE(IfmStorage);
  112.  
  113. DECLARE_INTERFACE(IASClassMsgSink);
  114. DECLARE_INTERFACE(IASEventSink);
  115. DECLARE_INTERFACE(IASSystemEventSink);
  116. DECLARE_INTERFACE(IFMDraw);
  117. DECLARE_INTERFACE(IASGUIDefaults);
  118.  
  119. //--------------------------------------------------------------------------------------------
  120. //
  121. // Guids
  122. // Each object is listed along with it's interfaces
  123. //
  124. //--------------------------------------------------------------------------------------------
  125. //
  126. // The base Control Objeds and interfaces. 
  127. //
  128. // {6D318C40-9343-11d0-B512-00A024A652FA}
  129. DEFINE_GUID(IID_ASCONTROL, 
  130. 0x6d318c40, 0x9343, 0x11d0, 0xb5, 0x12, 0x0, 0xa0, 0x24, 0xa6, 0x52, 0xfa);
  131. // {6D318C41-9343-11d0-B512-00A024A652FA}
  132. DEFINE_GUID(IID_ASCLASSMSGSINK, 
  133. 0x6d318c41, 0x9343, 0x11d0, 0xb5, 0x12, 0x0, 0xa0, 0x24, 0xa6, 0x52, 0xfa);
  134. // {6D318C42-9343-11d0-B512-00A024A652FA}
  135. DEFINE_GUID(IID_ASEVENTSINK, 
  136. 0x6d318c42, 0x9343, 0x11d0, 0xb5, 0x12, 0x0, 0xa0, 0x24, 0xa6, 0x52, 0xfa);
  137. //
  138. // A standard form Object
  139. //
  140. // {37C23051-997F-11d0-88DC-0000F80401D1}
  141. DEFINE_GUID(CLSID_ASFORM, 
  142. 0x37c23051, 0x997f, 0x11d0, 0x88, 0xdc, 0x0, 0x0, 0xf8, 0x4, 0x1, 0xd1);
  143.  
  144. // IASForm is exposed by all forms
  145. // {6D318C43-9343-11d0-B512-00A024A652FA}
  146. DEFINE_GUID(IID_ASFORM, 
  147. 0x6d318c43, 0x9343, 0x11d0, 0xb5, 0x12, 0x0, 0xa0, 0x24, 0xa6, 0x52, 0xfa);
  148.  
  149. // An additional interface on the form for IconTray application icons
  150. // {8A822EFE-628B-11d1-9B28-0000F8757D96}
  151. DEFINE_GUID(IID_ASICONTRAY,
  152. 0x8a822efe, 0x628b, 0x11d1, 0x9b, 0x28, 0x0, 0x0, 0xf8, 0x75, 0x7d, 0x96);
  153.  
  154. // {D7971260-933B-11d0-B512-00A024A652FA}
  155. // Form manager device context interface
  156. DEFINE_GUID(IID_FMDRAW, 
  157. 0xd7971260, 0x933b, 0x11d0, 0xb5, 0x12, 0x0, 0xa0, 0x24, 0xa6, 0x52, 0xfa);
  158.  
  159. //
  160. // Forms Manager
  161. //
  162. // {196F4760-5F84-11d1-9B27-0000F8757D96}
  163. DEFINE_GUID(CLSID_FMMANAGE, 
  164. 0x196f4760, 0x5f84, 0x11d1, 0x9b, 0x27, 0x0, 0x0, 0xf8, 0x75, 0x7d, 0x96);
  165.  
  166. // {1FB926E1-A17C-11d0-88E0-0000F80401D1}
  167. DEFINE_GUID(IID_FMMANAGE, 
  168. 0x1fb926e1, 0xa17c, 0x11d0, 0x88, 0xe0, 0x0, 0x0, 0xf8, 0x4, 0x1, 0xd1);
  169.  
  170. // {0C435CA0-A17A-11d0-88E0-0000F80401D1}
  171. DEFINE_GUID(IID_ASACTIVEFORMS, 
  172. 0xc435ca0, 0xa17a, 0x11d0, 0x88, 0xe0, 0x0, 0x0, 0xf8, 0x4, 0x1, 0xd1);
  173.  
  174. // {565910F0-E7F8-11d0-A4EE-00A0C90565FB}
  175. DEFINE_GUID(IID_FMSYSTEM, 
  176. 0x565910f0, 0xe7f8, 0x11d0, 0xa4, 0xee, 0x0, 0xa0, 0xc9, 0x5, 0x65, 0xfb);
  177.  
  178. // {945AEDA0-F410-11d0-88F5-0000F80401D1}
  179. DEFINE_GUID(CLSID_FMCOLLECTION, 
  180. 0x945aeda0, 0xf410, 0x11d0, 0x88, 0xf5, 0x0, 0x0, 0xf8, 0x4, 0x1, 0xd1);
  181. // {945AEDA1-F410-11d0-88F5-0000F80401D1}
  182. DEFINE_GUID(IID_FMCOLLECTION, 
  183. 0x945aeda1, 0xf410, 0x11d0, 0x88, 0xf5, 0x0, 0x0, 0xf8, 0x4, 0x1, 0xd1);
  184.  
  185.  
  186. // {C9CA6540-FEEF-11d0-A4EE-00A0C90565FB}
  187. DEFINE_GUID(CLSID_FMSTORAGE, 
  188. 0xc9ca6540, 0xfeef, 0x11d0, 0xa4, 0xee, 0x0, 0xa0, 0xc9, 0x5, 0x65, 0xfb);
  189.  
  190. // {C9CA6541-FEEF-11d0-A4EE-00A0C90565FB}
  191. DEFINE_GUID(IID_FMSTORAGE, 
  192. 0xc9ca6541, 0xfeef, 0x11d0, 0xa4, 0xee, 0x0, 0xa0, 0xc9, 0x5, 0x65, 0xfb);
  193.  
  194. // {4943B42D-F5BF-11d1-8233-0000F87A587C}
  195. DEFINE_GUID( IID_IASUSERNAVARROWS, 
  196. 0x4943b42d, 0xf5bf, 0x11d1, 0x82, 0x33, 0x0, 0x0, 0xf8, 0x7a, 0x58, 0x7c);
  197.  
  198. // {E80BCC9F-F645-11d1-8233-0000F87A587C}
  199. DEFINE_GUID( IID_IASTITLEBAR, 
  200. 0xe80bcc9f, 0xf645, 0x11d1, 0x82, 0x33, 0x0, 0x0, 0xf8, 0x7a, 0x58, 0x7c);
  201.  
  202.  
  203. //--------------------------------------------------------------------------------------------
  204. //
  205. // Constants and flags
  206. //
  207. //--------------------------------------------------------------------------------------------
  208.  
  209. // Applications using the Forms Manager May utilize the WM_ACTIVATEAPP which will be sent
  210. // on the Application Message Sink
  211.  
  212.  
  213. #ifndef WM_ACTIVATEAPP
  214. #define WM_ACTIVATEAPP  0x001c
  215. #endif
  216.  
  217. // A WM_SPCH_RECOG message that is passed down the message sink chain and not handled by the
  218. // any message sink generates a WM_COMMAND on the foreground form event sink with:
  219. //
  220. // uMsg == WM_COMMAND
  221. // LOWORD( wParam) == FormId, HIWORD(wParam) == SPCHN_CMDRECOG
  222. // lParam == Speech command Id.
  223.  
  224. #define SPCHN_CMDRECOG  0xe00e
  225.  
  226. // A WM_SPCH_FEEDBANCK message that is passed down the message sink chain and not handled by the
  227. // any message sink generates a WM_COMMAND on the foreground form event sink with:
  228. //
  229. // uMsg == WM_COMMAND
  230. // HIWORD(wParam) == SPCHN_FEEDBACK
  231. // LOWORD(wParam) - Current Feedback level
  232. // HIWORD(lParam) - Speech Feedback initiation reason - See  SFR_???? values in apcspch.h
  233. // LOWORD(lParam) - Reason specific information 
  234.  
  235. #define SPCHN_FEEDBACK  0xe00f
  236.  
  237. // On APC the WM_ACTIVATEAPP wParam has a flag indicating that the App was activated by speech
  238.  
  239. #define ACTIVATEAPP_FLG_BYSPEECH    0x00010000
  240.  
  241. #ifndef SC_SCREENSAVE
  242. #define SC_SCREENSAVE   0xF140
  243. #endif
  244.  
  245. // Base control property flags. Used to provide quick acess to a control's standard boolean
  246. // properties
  247. //
  248. #define ASFC_CTRL_VISIBLE        0x0001            // bit 0 control is visible
  249. #define ASFC_CTRL_ENABLE        0x0002            // bit 1 control is enabled
  250. #define ASFC_CTRL_OPAQUE        0x0004            // bit 2 control is opaque
  251. #define ASFC_CTRL_BORDER        0x0008            // bit 3 control has a border
  252. #define ASFC_CTRL_DEFERDRAW     0x0010          // bit 4 control defers drawing until this bit is cleared
  253.  
  254. // [RO]
  255. #define ASFC_CTRL_HASUI         0x0020          // bit 5 control has UI - [RO]
  256. #define ASFC_CTRL_TABSTOP        0x0040            // bit 6 control is a tab stop
  257.  
  258. // Speech
  259. #define ASFC_CTRL_SPEECHENABLED 0x0080          // bit 7 control is speech enabled
  260.  
  261.  
  262.  
  263. //
  264. // Controls and forms can have IDs. The following IDs are reserved
  265. //
  266. #define ASFC_ID_NONE 0x0000
  267. #define ASFC_ID_MIN  0x0000
  268. #define ASFC_ID_MAX  0x7fff
  269.  
  270. //    APC Defines for message boxes
  271.  
  272. //    Message box flags
  273. #define    FMMB_FLG_BEEP            0x0001
  274. #define FMMB_FLG_TTS            0x0002
  275. #define FMMB_FLG_HTML           0x0004
  276. #define FMMB_FLG_FILENAME       0x0008
  277. #define FMMB_FLG_AUTODISMISS    0x0010
  278. #define FMMB_FLG_OUTOFSTORAGE   0x0020
  279.  
  280. // APC defines for SetAppAlertState AlertAction
  281.  
  282. #define FMAA_ACTION_CLEAR            0
  283. #define FMAA_ACTION_RAISE_VALUE      1
  284. #define FMAA_ACTION_CLEAR_MASK       2
  285. #define FMAA_ACTION_RAISE_MASK       3
  286.  
  287. //    Message box icons (specific to APC)
  288. // must be in range 0x50 - 0xf0
  289. #define MB_APC_ICONCHECK     0x00000050L
  290.  
  291. //    Message box buttons (specific to APC)
  292. // must be in range 0x6 - 0xf
  293. #define MB_NOBUTTONS         0x00000006L
  294.  
  295. // APC Defines for help
  296. #define APCHELP_INDEX  1
  297. #define APCHELP_TOPIC  2
  298.  
  299. // Flags for MoveAppToForeground
  300.  
  301. #define ASFC_APPSTYLEFLG_POPUP      0x0001
  302.  
  303. //--------------------------------------------------------------------------------------------
  304. //
  305. // Conatants
  306. //
  307. //--------------------------------------------------------------------------------------------
  308. #define    ASFC_DISPLAY_MAXWIDTH                256
  309. #define    ASFC_DISPLAY_MAXHEIGHT                64
  310.  
  311. //--------------------------------------------------------------------------------------------
  312. //
  313. // Macros for examining the the Form Context handle returned from 
  314. // IFmManage - GetFormsContextHandle. 
  315. // The Macros should be used rather than testing the values explicitly.
  316. //
  317. //--------------------------------------------------------------------------------------------
  318.  
  319. #define    FC_WINDOWSDISPLAY    0xfffffffe
  320. #define    FC_MAINFACEPLATE    0xfffffffd
  321.  
  322. #define    IS_FCH_DRIVERDISPLAY(hFC)        (hFC == FC_WINDOWSDISPLAY || \
  323.                                                 hFC == FC_MAINFACEPLATE)
  324.  
  325. #define    IS_FCH_MASTERFACEPLATE(hFC)        (hFC == FC_MAINFACEPLATE)                                        
  326.  
  327. #define IS_FCH_SECONDARYDISPLAY(hFC)     (!IS_FCH_DRIVERDISPLAY(hFC))
  328.  
  329. #define    IS_FCH_WINDOWDISPLAY( hFC)         ( hFC == FC_WINDOWSDISPLAY)    
  330.  
  331. //--------------------------------------------------------------------------------------------
  332. //
  333. // Errors
  334. //
  335. //--------------------------------------------------------------------------------------------
  336. #define ASFC_ERROR(e)    MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x6000 + e)
  337.  
  338. #define ASFC_E_SYSTEM           ASFC_ERROR(0x0001)      // system error
  339. #define ASFC_E_VERSION          ASFC_ERROR(0x0002)      // wrong version of asfc.dll
  340. #define ASFC_E_BADID            ASFC_ERROR(0x0003)      // bad control/form id provided to a method  
  341. #define ASFC_E_IDEXISTS         ASFC_ERROR(0x0004)      // id already exists
  342. #define ASFC_E_WRONGTHREAD      ASFC_ERROR(0x0005)      // Method is only available to owner thread
  343.  
  344. #define ASFC_E_CTRL_CLOSED      ASFC_ERROR(0x0010)      // control has been closed. 
  345. #define ASFC_E_CTRL_NOTINIT     ASFC_ERROR(0x0011)      // control has not been initialized
  346. #define ASFC_E_CTRL_NOTSTARTED  ASFC_ERROR(0x0012)      // control has not been started
  347. #define ASFC_E_CTRL_NOFOCUS     ASFC_ERROR(0x0013)      // no current focus
  348. #define ASFC_E_CTRL_NOSUCH      ASFC_ERROR(0x0014)      // not a control we know about
  349. #define ASFC_E_CTRL_INVALID     ASFC_ERROR(0x0015)      // control does not support all interfaces
  350. #define ASFC_E_CTRL_NOPARENT    ASFC_ERROR(0x0016)      // control does not have a form parent
  351.  
  352. #define ASFC_E_FORM_EMPTY       ASFC_ERROR(0x0040)      // no controls on this form
  353. #define ASFC_E_FORM_BADDC       ASFC_ERROR(0x00041)     // an HDC that was recognized
  354.  
  355. #define ASFC_E_NOMENU           ASFC_ERROR(0x0060)
  356.  
  357. #define ASFC_E_FM_NOSUCH         ASFC_ERROR(0x0070);    // no such forms manager
  358. #define ASFC_E_FM_NOFMS         ASFC_ERROR(0x0071);     // no forms managers allocated
  359.  
  360. //--------------------------------------------------------------------------------------------
  361. //
  362. // APIs
  363. //
  364. //--------------------------------------------------------------------------------------------
  365. STDAPI InitASFormsManager(void);
  366. STDAPI UnInitASFormsManager(void);
  367.  
  368. //--------------------------------------------------------------------------------------------
  369. //
  370. // Interfaces
  371. //
  372. //--------------------------------------------------------------------------------------------
  373. //
  374. // Interface for drawing
  375. //
  376. #undef    INTERFACE
  377. #define    INTERFACE
  378.  
  379. DECLARE_INTERFACE_(IFMDraw, IDispatch)
  380.     {
  381.     STDMETHOD(GetDC) (THIS_ OLE_HANDLE *phDC) PURE;
  382.     STDMETHOD(Commit) (THIS_ OLE_HANDLE hDC) PURE;
  383.     STDMETHOD(ClipAndCommit) (THIS_ OLE_HANDLE hDC, OLE_HANDLE hrgnClip) PURE;
  384.     STDMETHOD(ReleaseDC) (THIS_ OLE_HANDLE hDC) PURE;
  385.     STDMETHOD(GetDeviceCaps) (THIS_ long index, long *plValue) PURE;
  386.     };
  387.  
  388. //
  389. // Event firing
  390. //
  391. #undef    INTERFACE
  392. #define    INTERFACE
  393.  
  394. DECLARE_INTERFACE_(IASEventSink, IDispatch)
  395.     {
  396.     STDMETHOD(ReceiveMsg) (THIS_ long uMsg, long wParam, long lParam) PURE;
  397.     };
  398.  
  399.  
  400. //
  401. // Class Msg Sink
  402. //
  403. #undef    INTERFACE
  404. #define    INTERFACE
  405.  
  406. DECLARE_INTERFACE_(IASClassMsgSink, IDispatch)
  407.     {
  408.     //
  409.     // Lifetime
  410.     //
  411.     STDMETHOD(HandleStart) (THIS_ IDispatch *pdispControl) PURE;
  412.     STDMETHOD(HandleClose) (THIS_ IDispatch *pdispControl) PURE;
  413.     //
  414.     // Messages
  415.     //
  416.     STDMETHOD(HandleDraw) (THIS_ IDispatch *pdispControl, OLE_HANDLE hDC) PURE;
  417.     STDMETHOD(HandleMessage) (THIS_ IDispatch *pdispControl, long uMsg, long wParam, long lParam) PURE;
  418.     STDMETHOD(HandleKeyPress) (THIS_ IDispatch *pdispControl, long lKeyPress) PURE;
  419.     //
  420.     // Focus
  421.     //
  422.     STDMETHOD(HandleGotFocus) (THIS_ IDispatch *pdispControl) PURE;
  423.     STDMETHOD(HandleLostFocus) (THIS_ IDispatch *pdispControl) PURE;
  424.     };
  425.  
  426. //
  427. // All AutoPC Simple controls MUST implement this interface
  428. //
  429. #undef    INTERFACE
  430. #define    INTERFACE
  431.  
  432. DECLARE_INTERFACE_(IASControl, IDispatch)
  433.     {
  434.     //
  435.     // Lifetime
  436.     //
  437.     STDMETHOD(Init) (THIS_ short wID, IDispatch *pdispParent, IDispatch *pdispEventSink) PURE;
  438.     STDMETHOD(Start) (THIS) PURE;
  439.     STDMETHOD(Close) (THIS) PURE;
  440.     STDMETHOD(IsStarted) (THIS) PURE;
  441.     //
  442.     // Messages
  443.     //
  444.     STDMETHOD(Draw) (THIS_ OLE_HANDLE hDC) PURE;
  445.     STDMETHOD(Redraw) (THIS) PURE;
  446.     STDMETHOD(ReceiveMsg) (THIS_ long uMsg, long wParam, long lParam) PURE;
  447.     STDMETHOD(KeyPress) (THIS_ long lKeyPress) PURE;
  448.     //
  449.     // Focus
  450.     //
  451.     STDMETHOD(GotFocus) (THIS) PURE;
  452.     STDMETHOD(LostFocus) (THIS) PURE;
  453.     //
  454.     // Bounds
  455.     //
  456.     STDMETHOD(GetBounds) (THIS_ long *plLeft, long *plTop, long *plWidth, long *plHeight) PURE;
  457.     STDMETHOD(SetBounds) (THIS_ long lLeft, long lTop, long lWidth, long lHeight) PURE;
  458.     //
  459.     // Hit Testing
  460.     //
  461.     STDMETHOD(HitTest) (THIS_ long lx, long ly) PURE;
  462.     //
  463.     // Other methods
  464.     //
  465.     STDMETHOD(GetCommonBoolProperties) (THIS_ short *pwProps) PURE;
  466.     STDMETHOD(PutCommonBoolProperties) (THIS_ short wProps) PURE;
  467.     //
  468.     // Properties
  469.     //
  470.     //
  471.     // Identification
  472.     //
  473.     STDMETHOD(get_ID) (THIS_ short *pwID) PURE;
  474.     STDMETHOD(get_CLSID) (THIS_ BSTR *pbstrCLSID) PURE;
  475.     //
  476.     // Pointers
  477.     //
  478.     STDMETHOD(get_ClassMsgSink) (THIS_ IDispatch **ppdispSink) PURE;
  479.     STDMETHOD(put_ClassMsgSink) (THIS_ IDispatch *pdispSink) PURE;    
  480.     STDMETHOD(get_Parent) (THIS_ IDispatch **ppdispParent) PURE;
  481.     STDMETHOD(put_Parent) (THIS_ IDispatch *pdispParent) PURE;    
  482.     STDMETHOD(get_EventSink) (THIS_ IDispatch **ppdispSink) PURE;
  483.     STDMETHOD(put_EventSink) (THIS_ IDispatch *pdispSink) PURE;    
  484.     STDMETHOD(get_Delegate) (THIS_ IDispatch **ppdispDelegate) PURE;
  485.     STDMETHOD(put_Delegate) (THIS_ IDispatch *pdispDelegate) PURE;    
  486.     //
  487.     // Boolean
  488.     //
  489.     STDMETHOD(get_Visible) (THIS_ BOOL *pfVisible) PURE;
  490.     STDMETHOD(put_Visible) (THIS_ BOOL fVisible) PURE;
  491.     STDMETHOD(get_Enable) (THIS_ BOOL *pfEnable) PURE;
  492.     STDMETHOD(put_Enable) (THIS_ BOOL fEnable) PURE;
  493.     STDMETHOD(get_Opaque) (THIS_ BOOL *pfOpaque) PURE;
  494.     STDMETHOD(put_Opaque) (THIS_ BOOL fOpaque) PURE;
  495.     STDMETHOD(get_Border) (THIS_ BOOL *pfBorder) PURE;
  496.     STDMETHOD(put_Border) (THIS_ BOOL fBorder) PURE;
  497.     STDMETHOD(get_DeferDraw) (THIS_ BOOL *pfDeferDraw) PURE;
  498.     STDMETHOD(put_DeferDraw) (THIS_ BOOL fDeferDraw) PURE;
  499.  
  500.     STDMETHOD(get_TabStop) (THIS_ BOOL *pfTabStop) PURE; // RO
  501.        STDMETHOD(get_HasUI) (THIS_ BOOL *pfHasUI) PURE;     // RO
  502.     //
  503.     // Fonts and Colors
  504.     //
  505.     STDMETHOD(put_Color) (THIS_ int nColorIndex, OLE_COLOR clr) PURE;
  506.     STDMETHOD(get_Color) (THIS_ int nColorIndex, OLE_COLOR* pclr) PURE;
  507.     STDMETHOD(get_ForeColor) (THIS_ OLE_COLOR *pclr) PURE;
  508.     STDMETHOD(put_ForeColor) (THIS_ OLE_COLOR clr) PURE;
  509.     STDMETHOD(get_BackColor) (THIS_ OLE_COLOR *pclr) PURE;
  510.     STDMETHOD(put_BackColor) (THIS_ OLE_COLOR clr) PURE;
  511.     STDMETHOD(get_Font) (THIS_ IFontDisp **ppFontDisp) PURE;
  512.     STDMETHOD(put_Font) (THIS_ IFontDisp *pFontDisp) PURE;
  513.     STDMETHOD(get_BackgroundBrush) (THIS_ OLE_HANDLE *phBrush) PURE;
  514.     STDMETHOD(put_BackgroundBrush) (THIS_ OLE_HANDLE hBrush) PURE;
  515.     //
  516.     // Dimensions
  517.     //
  518.     STDMETHOD(get_Left) (THIS_ long *px) PURE;
  519.     STDMETHOD(put_Left) (THIS_ long x) PURE;
  520.     STDMETHOD(get_Width) (THIS_ long *pdx) PURE;
  521.     STDMETHOD(put_Width) (THIS_ long dx) PURE;
  522.     STDMETHOD(get_Top) (THIS_ long *py) PURE;
  523.     STDMETHOD(put_Top) (THIS_ long y) PURE;
  524.     STDMETHOD(get_Height) (THIS_ long *pdy) PURE;
  525.     STDMETHOD(put_Height) (THIS_ long dy) PURE;
  526.     //
  527.     // Strings
  528.     //
  529.     STDMETHOD(get_Caption) (THIS_ BSTR *pbstrCaption) PURE;
  530.     STDMETHOD(put_Caption) (THIS_ BSTR bstrCaption) PURE;
  531.     // 
  532.     // Others
  533.     //
  534.     STDMETHOD(get_UserData) (THIS_ long *plData) PURE;
  535.     STDMETHOD(put_UserData) (THIS_ long lData) PURE;    
  536.  
  537.     // Natural Size,  the size that a control would like to be
  538.     STDMETHOD(get_NaturalSize) (THIS_ long *plWidth, long *plHeight) PURE;
  539.  
  540.     // speech feedback
  541.     STDMETHOD(Speak)(THIS_ DWORD dwSpeechContext, DWORD dwMode, DWORD dwReserved )  PURE;
  542.     };
  543.  
  544. #undef    INTERFACE
  545. #define    INTERFACE
  546.  
  547. // Titlebar interface
  548. DECLARE_INTERFACE_(IASTitlebar, IASControl)
  549. {
  550.     STDMETHOD(get_SubCaption) (THIS_ BSTR *pbstrSubCaption) PURE;
  551.     STDMETHOD(put_SubCaption) (THIS_ BSTR bstrSubCaption) PURE;
  552.     
  553.     STDMETHOD(get_Icon)(THIS_ OLE_HANDLE *phIcon) PURE;
  554.     STDMETHOD(put_Icon)(THIS_ OLE_HANDLE hIcon) PURE;
  555.     
  556.     STDMETHOD(put_StatusImageList)(THIS_ OLE_HANDLE hbmImage, OLE_HANDLE hbmImageMask, long cxImage, long cyImage) PURE;
  557.     STDMETHOD(get_StatusImageList)(THIS_ OLE_HANDLE *phbmImage, OLE_HANDLE *phbmImageMask, long *pcxImage, long *pcyImage) PURE;
  558.     
  559.     STDMETHOD(put_StatusFlags) (THIS_ long lStatusFlags) PURE;
  560.     STDMETHOD(get_StatusFlags) (THIS_ long *plStatusFlags) PURE;
  561.  
  562.     STDMETHOD(put_MaxTitleWidth) (THIS_ long lMaxTitleWidth) PURE;
  563.     STDMETHOD(get_MaxTitleWidth) (THIS_ long *plMaxTitleWidth) PURE;
  564. };
  565.  
  566.  
  567.  
  568. #undef    INTERFACE
  569. #define    INTERFACE
  570.  
  571. // Navigation Arrows interface
  572. DECLARE_INTERFACE_(IASUserNavArrows, IASControl)
  573. {
  574.     STDMETHOD(get_NavState) (THIS_ long *plNavState) PURE;
  575.     STDMETHOD(put_NavState) (THIS_ long lNavState) PURE;
  576.     STDMETHOD(QueryFormForNavState)( THIS) PURE;
  577. };    
  578.  
  579.  
  580.  
  581. #undef    INTERFACE
  582. #define    INTERFACE
  583.  
  584. // Query Key Usage interface
  585. DECLARE_INTERFACE_(IQueryKeyUsage, IUnknown)
  586. {
  587.     STDMETHOD(FlagKeysUsed) (THIS_ long lKeysUsed, long lKeysEaten) PURE;
  588. };    
  589.  
  590.  
  591.  
  592. #undef    INTERFACE
  593. #define    INTERFACE
  594.  
  595. //
  596. // AutoPC Simple Forms must implement this interface
  597. // A Form is ALSO a control and inherits from IASControl
  598. //
  599. DECLARE_INTERFACE_(IASForm, IASControl)
  600.     {
  601.     // Unitialize
  602.     STDMETHOD(Uninitialize) (THIS) PURE;
  603.     //
  604.     // Add, remove, count controls
  605.     //
  606.     STDMETHOD(get_Count) (THIS_ long *pcItems) PURE;
  607.     STDMETHOD(Item) (THIS_ VARIANT index, IDispatch **ppdisp) PURE;
  608.     STDMETHOD(ItemFromID) (THIS_ short wID, IDispatch **ppdisp) PURE;
  609.  
  610.     STDMETHOD(Add) (THIS_ IDispatch *pdispControl, short wID) PURE;
  611.     STDMETHOD(Remove) (THIS_ IDispatch *pdispControl) PURE;
  612.     STDMETHOD(RemoveAtIndex) (THIS_ long index) PURE;
  613.     STDMETHOD(RemoveByID) (THIS_ short wID) PURE;
  614.     STDMETHOD(RemoveAll) (THIS) PURE;
  615.  
  616.     STDMETHOD(IsControlOnForm) (THIS_ IDispatch *pdispControl) PURE;
  617.     //
  618.     // Draw everything that is in the update region
  619.     //
  620.     STDMETHOD(Update) (THIS) PURE;
  621.     STDMETHOD(GetIFMDraw) (THIS_ IDispatch **ppdispFMDraw, long lxLeft, long lyTop, long lxWidth, long lyHeight) PURE;
  622.  
  623.     // Speech Initialization paramenters required by Ctrls
  624.  
  625.     STDMETHOD(GetSpeechInitInfo) (THIS_ OLE_HANDLE * phWnd, long * pThreadId) PURE;    
  626.  
  627.     //
  628.     // Invalidation. Invalidate the given area in the form
  629.     //
  630.     STDMETHOD(Invalidate) (THIS_ long lxLeft, long lyTop, long lxWidth, long lyHeight) PURE;
  631.     STDMETHOD(InvalidateAll) (THIS) PURE;
  632.     //
  633.     // Change focus
  634.     //
  635.     STDMETHOD(GetFocus) (THIS_ IDispatch **ppdispControl) PURE;
  636.     STDMETHOD(SetFocus) (THIS_ IDispatch *pdispControl) PURE;
  637.     STDMETHOD(SetFocusNext) (THIS) PURE;
  638.     STDMETHOD(SetFocusPrev) (THIS) PURE;
  639.     STDMETHOD(SetZOrder) (THIS_ IDispatch *pdispControl, IDispatch *pdispControlAfter) PURE;
  640.     //
  641.     // Timers
  642.     //
  643.     STDMETHOD(SetTimer) (THIS_ IDispatch *pdispControl, UINT dMilliSecs, long *pTimerID) PURE;
  644.     STDMETHOD(KillTimer) (THIS_ long idTimer) PURE;
  645.     //
  646.     // Voice Menu
  647.     //
  648.     STDMETHOD(get_VoiceMenu) (THIS_ IUnknown **ppUnknownVoiceMenu) PURE;
  649.     STDMETHOD(put_VoiceMenu) (THIS_ IUnknown *pUnknownVoiceMenu) PURE;
  650.  
  651.     //
  652.     // Form specific properties
  653.     //
  654.  
  655.     STDMETHOD(get_WaitStatus) (THIS_ BOOL *pfWaitStatus) PURE;
  656.     STDMETHOD(put_WaitStatus) (THIS_ BOOL fWaitStatus) PURE;    
  657.  
  658.     STDMETHOD(get_IconTrayVisible) (THIS_ BOOL *pfVisible) PURE;
  659.     STDMETHOD(put_IconTrayVisible) (THIS_ BOOL fVisible) PURE;
  660.     
  661.     //
  662.     // Speech
  663.     //
  664.     STDMETHOD(get_Speech)(THIS_ IAPCSpeech** ppSpeech) PURE;
  665.  
  666.     // User Navigation Arrows Control
  667.     STDMETHOD(get_NavArrows)(THIS_ IASUserNavArrows** ppNavArrows) PURE;
  668.     
  669.     // Title Bar Control
  670.     STDMETHOD(get_Titlebar)(THIS_ IASTitlebar** ppTitlebar) PURE;
  671.  
  672.     // context sensitive help
  673.     STDMETHOD(put_HelpContext)(THIS_ BSTR bstrHelpFile, BSTR bstrHelpTopic) PURE;    
  674.     STDMETHOD(get_HelpContext)(THIS_ BSTR *pbstrHelpFile, BSTR *pbstrHelpTopic) PURE;    
  675.     };
  676.  
  677. // The Form Icon Tray interface
  678. //
  679. DECLARE_INTERFACE_(IASIconTray, IDispatch)
  680.     {
  681.     STDMETHOD(GetBounds) (THIS_ long *plLeft, long *plTop, long *plWidth, long *plHeight) PURE;
  682.     STDMETHOD(SetBounds) (THIS_ long lLeft, long lTop, long lWidth, long lHeight) PURE;
  683.     STDMETHOD(get_Count) (THIS_ long *pcItems) PURE;
  684.     STDMETHOD(Add) (THIS_ OLE_HANDLE hIcon, short wID) PURE;
  685.     STDMETHOD(InsertAt) (THIS_ long index, OLE_HANDLE hIcon, short wID) PURE;
  686.     STDMETHOD(RemoveAtIndex) (THIS_ long index) PURE;
  687.     STDMETHOD(RemoveByID) (THIS_ short wID) PURE;       
  688.     };    
  689.  
  690.  
  691. //
  692. // A collection of Active ASForms
  693. //
  694. #undef  INTERFACE
  695. #define INTERFACE
  696.  
  697. DECLARE_INTERFACE_(IASActiveForms, IDispatch)
  698.     {
  699.     //
  700.     // Collection methods
  701.     //
  702.     STDMETHOD(get_Count) (THIS_ long *pcItems) PURE;
  703.     STDMETHOD(Item) (THIS_ VARIANT index, IDispatch **ppdisp) PURE;
  704.     STDMETHOD(ItemFromID) (THIS_ short wID, IDispatch **ppdisp) PURE;
  705.     //
  706.     // Change focus (which form in the collection has focus)
  707.     //
  708.     STDMETHOD(GetFocus) (THIS_ IDispatch **ppdispForm) PURE;
  709.     STDMETHOD(SetFocus) (THIS_ IDispatch *pdispForm) PURE;
  710.     };
  711.  
  712. //
  713. // The Forms Manager Manage interface
  714. //
  715. #undef  INTERFACE
  716. #define INTERFACE
  717.  
  718. DECLARE_INTERFACE_(IfmManage, IDispatch)
  719.     {
  720.     //
  721.     // Start or Stop Forms
  722.     //
  723.     STDMETHOD(Start) (THIS_ IDispatch *pdispForm) PURE;
  724.     STDMETHOD(Stop) (THIS_ IDispatch *pdispForm) PURE;
  725.     STDMETHOD(StopAll) (THIS) PURE;
  726.     //
  727.     // Focus
  728.     //
  729.     STDMETHOD(MoveToForeground) ( THIS_ BOOL fThis, LONG * pZOrder) PURE;
  730.     STDMETHOD(RestoreZOrder) (THIS_ LONG ZOrder) PURE;
  731.     STDMETHOD (MoveAppToForeground)( THIS_ LONG ProcId, LONG * pZOrder, LONG Flags) PURE;
  732.     STDMETHOD (RestoreAppZOrder)( THIS_ LONG ZOrder) PURE;
  733.     //
  734.     // Management Interfaces
  735.     //
  736.     STDMETHOD (GetFormsContextHandle)( THIS_ OLE_HANDLE * phFC) PURE;
  737.     STDMETHOD (RegisterStartedApplication)( THIS_ OLE_HANDLE hFC, BSTR bstrAppName, LONG AppMsgID, LONG Flags) PURE;
  738.     STDMETHOD (DeregisterStartedApplication)( THIS_ OLE_HANDLE hFC, BSTR bstrAppName) PURE;
  739.           
  740.     STDMETHOD (SetAppAlertState)( THIS_ OLE_HANDLE hFC, BOOL fCurrentUser, BSTR bstrAppName, 
  741.                                   BSTR bstrAlertName, LONG AlertAction, LONG AlertVal) PURE;
  742.     STDMETHOD (GetAppAlertState)( THIS_ OLE_HANDLE hFC, BOOL fCurrentUser, BSTR bstrAppName, 
  743.                                   BSTR bstrAlertName, BOOL * fAlert, LONG * pAlertVal) PURE;
  744.     // Load Form from RC file
  745.     STDMETHOD(LoadFormResource) (THIS_ OLE_HANDLE,LONG wRsrcID,IDispatch **ppForm,IDispatch *pDispSink) PURE;
  746.     // Load Menu from RC file
  747.     STDMETHOD(LoadMenuResource) (THIS_ OLE_HANDLE,LONG wRsrcID,IDispatch **ppMenu) PURE;
  748.     
  749.     //
  750.     // Register & query Msg & event sinks
  751.     //
  752.     STDMETHOD(get_Parent) (THIS_ IDispatch **ppdispParent) PURE;
  753.     STDMETHOD(get_ClassMsgSink) (THIS_ IDispatch **ppdispSink) PURE;
  754.     STDMETHOD(put_ClassMsgSink) (THIS_ IDispatch *pdispSink) PURE;    
  755.     STDMETHOD(get_EventSink) (THIS_ IDispatch **ppdispSink) PURE;
  756.     STDMETHOD(put_EventSink) (THIS_ IDispatch *pdispSink) PURE;    
  757.  
  758.     STDMETHOD(PostMsg)(THIS_ long uMsg, long wParam, long lParam) PURE;
  759.     STDMETHOD(SendMsg)(THIS_ long uMsg, long wParam, long lParam) PURE;
  760.     
  761.     STDMETHOD(PostMessageToApp)(THIS_ long uMsg, long wParam, long lParam) PURE;
  762.     STDMETHOD(CloseAppByName)(THIS_ BSTR bstrAppName, BOOL fTerminate) PURE;
  763.  
  764.     // App Data
  765.     STDMETHOD(get_AppName) (THIS_ BSTR *pbstrAppName) PURE;
  766.     STDMETHOD(put_AppName) (THIS_ BSTR bstrAppName) PURE;
  767.     
  768.     STDMETHOD(get_AppSmallIcon) (THIS_ OLE_HANDLE *phSmallIcon) PURE;
  769.     STDMETHOD(put_AppSmallIcon) (THIS_ OLE_HANDLE hSmallIcon) PURE;
  770.  
  771.     // Application global help file
  772.     STDMETHOD(put_HelpContext)(THIS_ BSTR bstrHelpFile, BSTR bstrHelpTopic) PURE;    
  773.     STDMETHOD(get_HelpContext)(THIS_ BSTR *pbstrHelpFile, BSTR *pbstrHelpTopic) PURE;    
  774.     
  775.     //
  776.     // Menus
  777.     //
  778.     STDMETHOD(put_Menu) (THIS_ IDispatch *pdispMenu, short wID) PURE;
  779.     STDMETHOD(get_Menu) (THIS_ IDispatch **ppdispMenu) PURE;
  780.     
  781.     STDMETHOD(get_MenuVisible) (THIS_ BOOL *pfVisible) PURE;
  782.     STDMETHOD(put_MenuVisible) (THIS_ BOOL fVisible) PURE;
  783.  
  784.     STDMETHOD(get_MenuTitlebar) (THIS_ IASTitlebar **ppTitlebar) PURE;
  785.     
  786.     //
  787.     // MessageBox
  788.     //
  789.     STDMETHOD(fmMessageBox) (THIS_ BSTR bstrMsg, BSTR bstrCaption, LONG uType, LONG Flags, LONG * pRes) PURE;
  790.     STDMETHOD(fmStopMessageBox) (THIS) PURE;
  791.     //
  792.     // Help
  793.     //
  794.     STDMETHOD(fmStartHelp) (THIS_ BSTR bstrFileName, DWORD dwFlags=APCHELP_INDEX, DWORD dwTopicID=0) PURE;
  795.     STDMETHOD(fmStopHelp) (THIS) PURE;
  796.  
  797.     //
  798.     // Speech
  799.     //
  800.     STDMETHOD(get_Speech)(THIS_ IAPCSpeech** ppSpeech) PURE;
  801.     //STDMETHOD(put_Speech)(THIS_ IAPCSpeech* pSpeech) PURE;
  802.  
  803.     // Login
  804.  
  805.     STDMETHOD(fmVerifyLoginState)(THIS_ BSTR bstrTitle, BOOL fDoLogin, BOOL fKeepFocusOnFail, BOOL *pfLoggedIn) PURE;
  806.     
  807.     };
  808.  
  809.  
  810. //
  811. // The Forms Manager Information interface
  812. //
  813. DECLARE_INTERFACE_(IfmSystem, IDispatch)
  814.     {
  815.     STDMETHOD(GetFormDisplayCaps) (THIS_ OLE_HANDLE hFC, LONG nIndex, LONG * pRetInfo) PURE;
  816.     STDMETHOD(CreateFMCompatibleBitmap) (THIS_ OLE_HANDLE hFC, OLE_HANDLE *phBmp, LONG width, LONG  height) PURE;
  817.     STDMETHOD(GetFMSystemFont) (THIS_ OLE_HANDLE hFC, BOOL fSmall, IDispatch **ppdispFont) PURE;    
  818.     STDMETHOD(CreateFMCompatibleDC) (THIS_ OLE_HANDLE hFC, OLE_HANDLE *phDC) PURE;
  819.     };
  820.  
  821. //
  822. // A Collection of Forms Managers
  823. // 
  824. DECLARE_INTERFACE_(IfmCollection, IDispatch)
  825.     {
  826.     STDMETHOD(get_Count) (THIS_ long *pcItems) PURE;
  827.     STDMETHOD(Item) (THIS_ VARIANT index, IDispatch **ppdisp) PURE;
  828.     //
  829.     // Change focus (which forms manager in the collection has focus)
  830.     //
  831.     STDMETHOD(GetFocus) (THIS_ IDispatch **ppdispfmManage) PURE;
  832.     STDMETHOD(SetFocus) (THIS_ IDispatch *pdispfmManage) PURE;
  833.     };
  834.  
  835. //
  836. // The Forms Managers Storage interface
  837. // 
  838. DECLARE_INTERFACE_(IfmStorage, IDispatch)
  839.     {
  840.     STDMETHOD(LoadForm) (THIS_ BSTR, IDispatch **ppdisp, IDispatch *pdisp) PURE;
  841.     STDMETHOD(StoreForm) (THIS_ BSTR, IDispatch *ppdisp, BOOL *) PURE;
  842.     STDMETHOD(DeleteForm) (THIS_ BSTR) PURE;
  843.  
  844.  
  845.     };
  846.  
  847. #endif
  848.  
  849.