Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

502 lines
20 KiB

  1. /**INC+**********************************************************************/
  2. /* Header: mstscax.h */
  3. /* */
  4. /* Purpose: CMsTscAx class declaration */
  5. /* Implementation of TS ActiveX control root interface (IMsTscAx) */
  6. /* */
  7. /* Copyright(C) Microsoft Corporation 1999-2000 */
  8. /* Author: nadima */
  9. /* */
  10. /****************************************************************************/
  11. #ifndef __MSTSCAX_H_
  12. #define __MSTSCAX_H_
  13. #include "atlwarn.h"
  14. #include "tsaxiids.h"
  15. #include "autil.h"
  16. #include "wui.h"
  17. #include "vchannel.h"
  18. //Header generated from IDL
  19. #include "mstsax.h"
  20. #include "arcmgr.h"
  21. #define MAX_DESKTOP_WIDTH 1600
  22. #define MIN_DESKTOP_WIDTH 200
  23. #define MAX_DESKTOP_HEIGHT 1200
  24. #define MIN_DESKTOP_HEIGHT 200
  25. //Maximum supported IE security zone for the secured
  26. //settings interface
  27. //IE zones are as follows (see URLZONE enum)
  28. // 0 MyComputer
  29. // 1 LocalIntranet
  30. // 2 TrustedSites
  31. // 3 Internet
  32. // 4 Restricted Sites
  33. #define MAX_TRUSTED_ZONE_INDEX (DWORD)URLZONE_TRUSTED
  34. //
  35. // ATL connection point proxy for notification events
  36. //
  37. #include "msteventcp.h"
  38. //
  39. // For sending back notifications to the web control
  40. //
  41. #define WM_VCHANNEL_DATARECEIVED WM_APP + 1001
  42. class CMstscAdvSettings;
  43. class CMsTscDebugger;
  44. class CMsTscSecuredSettings;
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CMsTscAx
  47. class ATL_NO_VTABLE CMsTscAx :
  48. public CComObjectRootEx<CComSingleThreadModel>,
  49. public IDispatchImpl<IMsRdpClient3, &IID_IMsRdpClient3, &LIBID_MSTSCLib>,
  50. public CComCoClass<CMsTscAx,&CLSID_MsRdpClient3>,
  51. public CComControl<CMsTscAx>,
  52. public IPersistStreamInitImpl<CMsTscAx>,
  53. public IPersistPropertyBagImpl<CMsTscAx>,
  54. public IOleControlImpl<CMsTscAx>,
  55. public IOleObjectImpl<CMsTscAx>,
  56. public IOleInPlaceActiveObjectImpl<CMsTscAx>,
  57. public IViewObjectExImpl<CMsTscAx>,
  58. public IOleInPlaceObjectWindowlessImpl<CMsTscAx>,
  59. public IConnectionPointContainerImpl<CMsTscAx>,
  60. public IPersistStorageImpl<CMsTscAx>,
  61. public ISpecifyPropertyPagesImpl<CMsTscAx>,
  62. public IQuickActivateImpl<CMsTscAx>,
  63. public IDataObjectImpl<CMsTscAx>,
  64. #if ((!defined (OS_WINCE)) || (!defined(WINCE_SDKBUILD)) )
  65. #ifdef REDIST_CONTROL
  66. //Only redist control is safe for scripting
  67. public IObjectSafetyImpl<CMsTscAx, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
  68. #else
  69. public IObjectSafetyImpl<CMsTscAx, 0>,
  70. #endif
  71. #endif
  72. public IProvideClassInfo2Impl<&CLSID_MsRdpClient3,&DIID_IMsTscAxEvents,&LIBID_MSTSCLib>,
  73. public IPropertyNotifySinkCP<CMsTscAx>,
  74. public CProxy_IMsTscAxEvents<CMsTscAx>,
  75. public IMsRdpClientNonScriptable
  76. {
  77. public:
  78. //
  79. // Ctor/dtor
  80. //
  81. CMsTscAx();
  82. ~CMsTscAx();
  83. private:
  84. //
  85. // Displayed status string
  86. //
  87. PDCTCHAR m_lpStatusDisplay;
  88. //pending connection request, will be serviced when
  89. //window is created
  90. DCBOOL m_bPendConReq;
  91. //control property to indicate autoconnect
  92. //
  93. DCBOOL m_bStartConnected;
  94. //
  95. // IMPORTANT: Do not change the value of the 'connected' state away from '1'
  96. // in order to remain compatible with TSAC 1.0
  97. //
  98. typedef enum {
  99. tscNotConnected = 0x0,
  100. tscConnected = 0x1, //VERY IMPORTANT: Fixed to '1' for compat w/TSAC
  101. tscConnecting = 0x2
  102. } TSCConnectState;
  103. //
  104. //current connection state
  105. //
  106. TSCConnectState _ConnectionState;
  107. //
  108. // Core init is defered to first connect, only done once
  109. //
  110. DCBOOL m_bCoreInit;
  111. //
  112. // Check that we don't re-enter the control
  113. // during an event. Lock is set to true when
  114. // we are in an event
  115. //
  116. BOOL m_fInControlLock;
  117. //
  118. // Handle getting multiple WM_DESTROY messages
  119. //
  120. INT m_iDestroyCount;
  121. //
  122. // Properties
  123. //
  124. DCUINT8 m_NonPortablePassword[UI_MAX_PASSWORD_LENGTH];
  125. DCBOOL m_bNonPortablePassSet;
  126. DCUINT8 m_NonPortableSalt[UT_SALT_LENGTH];
  127. DCBOOL m_NonPortableSaltSet;
  128. BOOL m_IsLongPassword;
  129. DCUINT8 m_PortablePassword[UI_MAX_PASSWORD_LENGTH];
  130. DCBOOL m_bPortablePassSet;
  131. DCUINT8 m_PortableSalt[UT_SALT_LENGTH];
  132. DCBOOL m_bPortableSaltSet;
  133. DCBOOL m_fRequestFullScreen;
  134. DCUINT m_DesktopWidth;
  135. DCUINT m_DesktopHeight;
  136. TCHAR m_szDisconnectedText[MAX_PATH];
  137. TCHAR m_szConnectingText[MAX_PATH];
  138. TCHAR m_szConnectedText[MAX_PATH];
  139. //
  140. // Private helper methods
  141. //
  142. DCVOID ResetNonPortablePassword();
  143. DCVOID ResetPortablePassword();
  144. DCBOOL IsNonPortablePassSet() {return m_bNonPortablePassSet;}
  145. DCBOOL IsNonPortableSaltSet() {return m_NonPortableSaltSet;}
  146. DCBOOL IsPortablePassSet() {return m_bPortablePassSet;}
  147. DCBOOL IsPortableSaltSet() {return m_bPortableSaltSet;}
  148. DCVOID SetNonPortablePassFlag(DCBOOL bVal) {m_bNonPortablePassSet = bVal;}
  149. DCVOID SetNonPortableSaltFlag(DCBOOL bVal) {m_NonPortableSaltSet = bVal;}
  150. DCVOID SetPortablePassFlag(DCBOOL bVal) {m_bPortablePassSet = bVal;}
  151. DCVOID SetPortableSaltFlag(DCBOOL bVal) {m_bPortableSaltSet = bVal;}
  152. DCBOOL ConvertPortableToNonPortablePass();
  153. DCBOOL ConvertNonPortableToPortablePass();
  154. DCBOOL UpdateStatusText(const PDCTCHAR szStatus);
  155. DCVOID SetConnectedStatus(TSCConnectState conState);
  156. HRESULT GetControlHostUrl(LPOLESTR* ppHostUrl);
  157. HRESULT StartConnect();
  158. HRESULT StartEstablishConnection( CONNECTIONMODE mode );
  159. STDMETHOD(OnFrameWindowActivate)(BOOL fActivate );
  160. //
  161. // Private Members.
  162. //
  163. private:
  164. CUI* m_pUI;
  165. CComObject<CMstscAdvSettings>* m_pAdvancedSettingsObj;
  166. CComObject<CMsTscDebugger>* m_pDebuggerObj;
  167. CComObject<CMsTscSecuredSettings>* m_pSecuredSettingsObj;
  168. // Connection mode for this instance.
  169. CONNECTIONMODE m_ConnectionMode;
  170. // Salem specific connected socket to be used by core to
  171. // continue on protocol.
  172. SOCKET m_SalemConnectedSocket;
  173. //
  174. // AutoReconnection manager component
  175. //
  176. CArcMgr _arcManager;
  177. public:
  178. CVChannels _VChans;
  179. DECLARE_REGISTRY_RESOURCEID(IDR_MSTSCAX)
  180. DECLARE_PROTECT_FINAL_CONSTRUCT()
  181. BEGIN_COM_MAP(CMsTscAx)
  182. COM_INTERFACE_ENTRY(IMsRdpClient3)
  183. COM_INTERFACE_ENTRY(IMsRdpClient2)
  184. COM_INTERFACE_ENTRY(IMsRdpClient)
  185. COM_INTERFACE_ENTRY(IMsTscAx)
  186. COM_INTERFACE_ENTRY2(IDispatch, IMsRdpClient3)
  187. COM_INTERFACE_ENTRY(IViewObjectEx)
  188. COM_INTERFACE_ENTRY(IViewObject2)
  189. COM_INTERFACE_ENTRY(IViewObject)
  190. COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
  191. COM_INTERFACE_ENTRY(IOleInPlaceObject)
  192. COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
  193. COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
  194. COM_INTERFACE_ENTRY(IOleControl)
  195. COM_INTERFACE_ENTRY(IOleObject)
  196. COM_INTERFACE_ENTRY(IPersistStreamInit)
  197. COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
  198. COM_INTERFACE_ENTRY(IPersistPropertyBag)
  199. COM_INTERFACE_ENTRY(IConnectionPointContainer)
  200. COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
  201. COM_INTERFACE_ENTRY(IQuickActivate)
  202. COM_INTERFACE_ENTRY(IPersistStorage)
  203. COM_INTERFACE_ENTRY(IDataObject)
  204. #if ((!defined (OS_WINCE)) || (!defined(WINCE_SDKBUILD)) )
  205. COM_INTERFACE_ENTRY(IObjectSafety)
  206. #endif
  207. COM_INTERFACE_ENTRY(IProvideClassInfo)
  208. COM_INTERFACE_ENTRY(IProvideClassInfo2)
  209. COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  210. COM_INTERFACE_ENTRY(IMsTscNonScriptable)
  211. COM_INTERFACE_ENTRY(IMsRdpClientNonScriptable)
  212. END_COM_MAP()
  213. BEGIN_PROP_MAP(CMsTscAx)
  214. PROP_ENTRY("Server", DISPID_PROP_SERVER, CLSID_MsRdpClient3)
  215. /*
  216. PROP_ENTRY("Domain", DISPID_PROP_DOMAIN, CLSID_MsRdpClient3)
  217. PROP_ENTRY("UserName", DISPID_PROP_USERNAME, CLSID_MsRdpClient3)
  218. PROP_ENTRY("StartProgram", DISPID_PROP_STARTPROGRAM, CLSID_MsRdpClient3)
  219. PROP_ENTRY("WorkDir", DISPID_PROP_WORKDIR, CLSID_MsRdpClient3)
  220. PROP_ENTRY("Connected", DISPID_PROP_CONNECTED, CLSID_MsRdpClient3)
  221. PROP_ENTRY("ClearTextPassword", DISPID_PROP_CLEARTEXTPASSWORD, CLSID_MsRdpClient3)
  222. PROP_ENTRY("PortablePassword", DISPID_PROP_PORTABLEPASSWORD, CLSID_MsRdpClient3)
  223. PROP_ENTRY("PortableSalt", DISPID_PROP_PORTABLESALT, CLSID_MsRdpClient3)
  224. PROP_ENTRY("BinaryPassword", DISPID_PROP_BINARYPASSWORD, CLSID_MsRdpClient3)
  225. PROP_ENTRY("BinarySalt", DISPID_PROP_BINARYSALT, CLSID_MsRdpClient3)
  226. PROP_ENTRY("ClientWidth", DISPID_PROP_CLIENTWIDTH, CLSID_MsRdpClient3)
  227. PROP_ENTRY("ClientHeight", DISPID_PROP_CLIENTHEIGHT, CLSID_MsRdpClient3)
  228. */
  229. PROP_ENTRY("FullScreen", DISPID_PROP_FULLSCREEN, CLSID_MsRdpClient3)
  230. PROP_ENTRY("StartConnected", DISPID_PROP_STARTCONNECTED, CLSID_MsRdpClient3)
  231. END_PROP_MAP()
  232. BEGIN_CONNECTION_POINT_MAP(CMsTscAx)
  233. CONNECTION_POINT_ENTRY(DIID_IMsTscAxEvents)
  234. CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
  235. END_CONNECTION_POINT_MAP()
  236. BEGIN_MSG_MAP(CMsTscAx)
  237. CHAIN_MSG_MAP(CComControl<CMsTscAx>)
  238. DEFAULT_REFLECTION_HANDLER()
  239. MESSAGE_HANDLER(WM_PAINT, OnPaint)
  240. MESSAGE_HANDLER(WM_CREATE, OnCreate)
  241. MESSAGE_HANDLER(WM_TERMTSC, OnTerminateTsc)
  242. MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
  243. MESSAGE_HANDLER(WM_SIZE, OnSize)
  244. MESSAGE_HANDLER(WM_SETFOCUS, OnGotFocus)
  245. MESSAGE_HANDLER(WM_PALETTECHANGED, OnPaletteChanged)
  246. MESSAGE_HANDLER(WM_QUERYNEWPALETTE, OnQueryNewPalette)
  247. MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysColorChange)
  248. //
  249. // Message handlers for internal TS events that are exposed
  250. // by firing events to the container
  251. //
  252. MESSAGE_HANDLER(WM_TS_CONNECTING, OnNotifyConnecting)
  253. MESSAGE_HANDLER(WM_TS_CONNECTED, OnNotifyConnected)
  254. MESSAGE_HANDLER(WM_TS_LOGINCOMPLETE, OnNotifyLoginComplete)
  255. MESSAGE_HANDLER(WM_TS_DISCONNECTED, OnNotifyDisconnected)
  256. MESSAGE_HANDLER(WM_TS_GONEFULLSCREEN, OnNotifyGoneFullScreen)
  257. MESSAGE_HANDLER(WM_TS_LEFTFULLSCREEN, OnNotifyLeftFullScreen)
  258. MESSAGE_HANDLER(WM_VCHANNEL_DATARECEIVED, OnNotifyChanDataReceived)
  259. MESSAGE_HANDLER(WM_TS_REQUESTFULLSCREEN, OnNotifyRequestFullScreen)
  260. MESSAGE_HANDLER(WM_TS_FATALERROR, OnNotifyFatalError)
  261. MESSAGE_HANDLER(WM_TS_WARNING, OnNotifyWarning)
  262. MESSAGE_HANDLER(WM_TS_DESKTOPSIZECHANGE, OnNotifyDesktopSizeChange)
  263. MESSAGE_HANDLER(WM_TS_IDLETIMEOUTNOTIFICATION, OnNotifyIdleTimeout)
  264. MESSAGE_HANDLER(WM_TS_REQUESTMINIMIZE, OnNotifyRequestMinimize)
  265. MESSAGE_HANDLER(WM_TS_ASKCONFIRMCLOSE, OnAskConfirmClose)
  266. MESSAGE_HANDLER(WM_TS_RECEIVEDPUBLICKEY, OnNotifyReceivedPublicKey)
  267. END_MSG_MAP()
  268. // IViewObjectEx
  269. DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
  270. public:
  271. //
  272. // IMsTscAx properties
  273. //
  274. STDMETHOD(put_Server) (/*[in]*/ BSTR newVal);
  275. STDMETHOD(get_Server) (/*[out]*/BSTR* pServer);
  276. STDMETHOD(put_Domain) (/*[in]*/ BSTR newVal);
  277. STDMETHOD(get_Domain) (/*[out]*/BSTR* pDomain);
  278. STDMETHOD(put_UserName) (/*[in]*/ BSTR newVal);
  279. STDMETHOD(get_UserName) (/*[out]*/BSTR* pUserName);
  280. STDMETHOD(put_DisconnectedText) (/*[in]*/ BSTR newVal);
  281. STDMETHOD(get_DisconnectedText) (/*[out]*/BSTR* pDisconnectedText);
  282. STDMETHOD(put_ConnectingText) (/*[in]*/ BSTR newVal);
  283. STDMETHOD(get_ConnectingText) (/*[out]*/BSTR* pConnectingText);
  284. //Password/salt properties
  285. STDMETHOD(put_ClearTextPassword) (/*[in]*/ BSTR newClearTextPassVal);
  286. STDMETHOD(put_PortablePassword) (/*[in]*/ BSTR newPortablePassVal);
  287. STDMETHOD(get_PortablePassword) (/*[out,retval]*/ BSTR* pPortablePass);
  288. STDMETHOD(put_PortableSalt) (/*[in]*/ BSTR newPortableSalt);
  289. STDMETHOD(get_PortableSalt) (/*[out,retval]*/ BSTR* pPortableSalt);
  290. STDMETHOD(put_BinaryPassword) (/*[in]*/ BSTR newPassword);
  291. STDMETHOD(get_BinaryPassword) (/*[out,retval]*/ BSTR* pPass);
  292. STDMETHOD(put_BinarySalt) (/*[in]*/ BSTR newSalt);
  293. STDMETHOD(get_BinarySalt) (/*[out,retval]*/ BSTR* pSalt);
  294. STDMETHOD(get_Connected) (/*[out]*/short* pIsConnected);
  295. STDMETHOD(put_DesktopWidth) (/*[in]*/ LONG newVal);
  296. STDMETHOD(get_DesktopWidth) (/*[in]*/ LONG* pVal);
  297. STDMETHOD(put_DesktopHeight) (/*[in]*/ LONG newVal);
  298. STDMETHOD(get_DesktopHeight) (/*[in]*/ LONG* pVal);
  299. STDMETHOD(put_StartConnected) (/*[in]*/ BOOL fStartConnected);
  300. STDMETHOD(get_StartConnected) (/*[out]*/BOOL* pfStartConnected);
  301. STDMETHOD(get_HorizontalScrollBarVisible) (/*[out]*/BOOL* pfHScrollVisible);
  302. STDMETHOD(get_VerticalScrollBarVisible) (/*[out]*/BOOL* pfVScrollVisible);
  303. STDMETHOD(put_FullScreenTitle) (/*[in]*/ BSTR fullScreenTitle);
  304. STDMETHOD(get_CipherStrength) (/*out*/ LONG* pCipherStrength);
  305. STDMETHOD(get_Version) (/*out*/ BSTR* pVersion);
  306. STDMETHOD(get_SecuredSettingsEnabled) (/*out*/ BOOL* pSecuredSettingsEnabled);
  307. STDMETHOD(get_SecuredSettings) (/*out*/ IMsTscSecuredSettings** ppSecuredSettings);
  308. STDMETHOD(get_Debugger) (/*[out]*/IMsTscDebug** ppDebugger);
  309. STDMETHOD(get_AdvancedSettings) (/*[out]*/IMsTscAdvancedSettings** ppAdvSettings);
  310. //
  311. // Control methods.
  312. //
  313. //
  314. // IMsRdpClient properties
  315. //
  316. STDMETHOD(put_ColorDepth) (/*[in]*/LONG colorDepth);
  317. STDMETHOD(get_ColorDepth) (/*[in]*/LONG* pcolorDepth);
  318. STDMETHOD(get_AdvancedSettings2)(
  319. OUT IMsRdpClientAdvancedSettings** ppAdvSettings
  320. );
  321. STDMETHOD(get_SecuredSettings2)(/*out*/ IMsRdpClientSecuredSettings**
  322. ppSecuredSettings2);
  323. STDMETHOD(get_ExtendedDisconnectReason) (/*[out]*/
  324. ExtendedDisconnectReasonCode*
  325. pExtendedDisconnectReason);
  326. STDMETHOD(put_FullScreen) (/*[in]*/ VARIANT_BOOL fFullScreen);
  327. STDMETHOD(get_FullScreen) (/*[out]*/VARIANT_BOOL* pfFullScreen);
  328. //
  329. // IMsTscAx methods
  330. //
  331. STDMETHOD(Connect)();
  332. STDMETHOD(Disconnect)();
  333. STDMETHOD(ResetPassword)();
  334. STDMETHOD(CreateVirtualChannels)(/*[in]*/ BSTR newChanList);
  335. STDMETHOD(SendOnVirtualChannel)(/*[in]*/ BSTR ChanName,/*[in]*/ BSTR sendData);
  336. //
  337. // IMsRdpClient methods
  338. //
  339. STDMETHOD(SetVirtualChannelOptions)(/*[in]*/ BSTR ChanName,
  340. /*[in]*/ LONG chanOptions);
  341. STDMETHOD(GetVirtualChannelOptions)(/*[in]*/ BSTR ChanName,
  342. /*[out]*/LONG* pChanOptions);
  343. STDMETHOD(RequestClose)(ControlCloseStatus* pCloseStatus);
  344. //
  345. // IMsRdpClientNonScriptable methods
  346. //
  347. STDMETHOD(NotifyRedirectDeviceChange)(/*[in]*/ WPARAM wParam,
  348. /*[in]*/ LPARAM lParam);
  349. STDMETHOD(SendKeys)(/*[in]*/ LONG numKeys,
  350. /*[in]*/ VARIANT_BOOL* pbArrayKeyUp,
  351. /*[in]*/ LONG* plKeyData);
  352. //
  353. // IMsRdpClient2 properties
  354. //
  355. STDMETHOD(get_AdvancedSettings3)(
  356. OUT IMsRdpClientAdvancedSettings2** ppAdvSettings2
  357. );
  358. STDMETHOD(put_ConnectedStatusText) (/*[in]*/ BSTR newVal);
  359. STDMETHOD(get_ConnectedStatusText) (/*[out]*/BSTR* pConnectedText);
  360. //
  361. // IMsRdpClient3 properties
  362. //
  363. STDMETHOD(get_AdvancedSettings4)(
  364. OUT IMsRdpClientAdvancedSettings3** ppAdvSettings3
  365. );
  366. //
  367. // Properties that are not exposed directly on the IMsTscAx interace
  368. //
  369. STDMETHOD(internal_PutFullScreen)(BOOL fScreen, BOOL fForceToggle = FALSE);
  370. STDMETHOD(internal_GetFullScreen)(BOOL* pfScreen);
  371. STDMETHOD(internal_PutStartProgram)(/*[in]*/ BSTR newVal);
  372. STDMETHOD(internal_GetStartProgram)(/*[out]*/BSTR* pStartProgram);
  373. STDMETHOD(internal_PutWorkDir)(/*[in]*/ BSTR newVal);
  374. STDMETHOD(internal_GetWorkDir)(/*[out]*/BSTR* pWorkDir);
  375. STDMETHOD(internal_GetDebugger)(/*[out]*/IMsTscDebug** ppDebugger);
  376. //
  377. // Override IOleObjectImpl::DoVerbInPlaceActivate to workaround
  378. // ATL bug
  379. //
  380. virtual HRESULT DoVerbInPlaceActivate(LPCRECT prcPosRect, HWND /* hwndParent */);
  381. virtual HRESULT FinalConstruct();
  382. //
  383. // Msg handlers
  384. //
  385. HRESULT OnDraw(ATL_DRAWINFO& di);
  386. LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  387. LRESULT OnInitTsc(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  388. LRESULT OnTerminateTsc(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  389. LRESULT OnGotFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  390. LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  391. LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  392. LRESULT OnPaletteChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  393. LRESULT OnQueryNewPalette(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  394. LRESULT OnSysColorChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  395. LRESULT OnNotifyConnecting(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  396. LRESULT OnNotifyConnected(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  397. LRESULT OnNotifyLoginComplete(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  398. LRESULT OnNotifyDisconnected(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  399. LRESULT OnNotifyGoneFullScreen(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  400. LRESULT OnNotifyLeftFullScreen(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  401. LRESULT OnNotifyChanDataReceived(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  402. LRESULT OnNotifyRequestFullScreen(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  403. LRESULT OnNotifyFatalError(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  404. LRESULT OnNotifyWarning(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  405. LRESULT OnNotifyDesktopSizeChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  406. LRESULT OnNotifyIdleTimeout(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  407. LRESULT OnNotifyRequestMinimize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  408. LRESULT OnAskConfirmClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  409. LRESULT OnNotifyReceivedPublicKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  410. HRESULT SetConnectWithEndpoint( SOCKET hSocket );
  411. //
  412. // Private methods
  413. //
  414. private:
  415. VOID SetInControlLock(BOOL flag) {m_fInControlLock = flag;}
  416. BOOL GetInControlLock() {return m_fInControlLock;}
  417. BOOL CheckReentryLock();
  418. BOOL IsControlDisconnected() {return tscNotConnected == _ConnectionState;}
  419. BOOL IsControlConnected() {return tscConnected == _ConnectionState;}
  420. public:
  421. CUI* GetCoreUI() {return m_pUI;}
  422. HWND GetHwnd() {return m_hWnd;}
  423. };
  424. #endif //__MSTSCAX_H_