www.pudn.com > Win32DirectX9.rar > netclient.h
//----------------------------------------------------------------------------- // File: NetConnect.h // // Desc: // // Copyright (C) 2000-2001 Microsoft Corporation. All Rights Reserved. //----------------------------------------------------------------------------- #ifndef NETCLIENT_H #define NETCLIENT_H #include#include #include #include //----------------------------------------------------------------------------- // Defines, structures, and error codes //----------------------------------------------------------------------------- #define DISPLAY_REFRESH_RATE 250 #define TIMERID_DISPLAY_HOSTS 1 #define TIMERID_CONNECT_COMPLETE 2 #define NCW_S_FORWARD ( (HRESULT) 0x01000001 ) // Dialog success, so go forward #define NCW_S_BACKUP ( (HRESULT) 0x01000002 ) // Dialog canceled, show previous dialog #define NCW_S_QUIT ( (HRESULT) 0x01000003 ) // Dialog quit, close app #define NCW_S_LOBBYCONNECT ( (HRESULT) 0x01000004 ) // Dialog connected from lobby, connect success class CNetClientWizard { public: CNetClientWizard( HINSTANCE hInst, TCHAR* strAppName, GUID* pGuidApp ); virtual ~CNetClientWizard(); HRESULT WINAPI MessageHandler( PVOID pvUserContext, DWORD dwMessageId, PVOID pMsgBuffer ); HRESULT WINAPI LobbyMessageHandler( PVOID pvUserContext, DWORD dwMessageId, PVOID pMsgBuffer ); HRESULT Init( IDirectPlay8Client* pDPClient, IDirectPlay8LobbiedApplication* pLobbiedApp ); HRESULT DoConnectWizard(); HRESULT ConnectUsingLobbySettings(); void SetPlayerName( TCHAR* strPlayerName ) { _tcsncpy( m_strLocalPlayerName, strPlayerName, MAX_PATH-1 ); m_strLocalPlayerName[ MAX_PATH-1 ] = 0; } void SetDefaultPort( DWORD dwDefaultPort ) { m_dwPort = dwDefaultPort; } TCHAR* GetPlayerName() { return m_strLocalPlayerName; } BOOL HaveConnectionSettingsFromLobby() { return m_bHaveConnectionSettingsFromLobby; } protected: struct DPHostEnumInfo { DWORD dwRef; DPN_APPLICATION_DESC* pAppDesc; IDirectPlay8Address* pHostAddr; IDirectPlay8Address* pDeviceAddr; TCHAR szSession[MAX_PATH]; DWORD dwLastPollTime; BOOL bValid; DPHostEnumInfo* pNext; }; static INT_PTR CALLBACK StaticSessionsDlgProc( HWND, UINT, WPARAM, LPARAM ); static INT_PTR CALLBACK StaticLobbyWaitDlgProc( HWND, UINT, WPARAM, LPARAM ); INT_PTR CALLBACK SessionsDlgProc( HWND, UINT, WPARAM, LPARAM ); INT_PTR CALLBACK LobbyWaitDlgProc( HWND, UINT, WPARAM, LPARAM ); VOID SessionsDlgInitListbox( HWND hDlg ); HRESULT SessionsDlgEnumHosts( HWND hDlg ); HRESULT SessionsDlgNoteEnumResponse( PDPNMSG_ENUM_HOSTS_RESPONSE pEnumHostsResponse ); VOID SessionsDlgExpireOldHostEnums(); HRESULT SessionsDlgDisplayEnumList( HWND hDlg ); HRESULT SessionsDlgJoinGame( HWND hDlg ); HRESULT SessionsDlgCreateGame( HWND hDlg ); VOID SessionsDlgEnumListCleanup(); IDirectPlay8Client* m_pDPClient; IDirectPlay8LobbiedApplication* m_pLobbiedApp; CRITICAL_SECTION m_csHostEnum; GUID m_guidApp; DWORD m_dwPort; HRESULT m_hrDialog; HWND m_hDlg; HINSTANCE m_hInst; DPHostEnumInfo m_DPHostEnumHead; TCHAR m_strAppName[MAX_PATH]; TCHAR m_strLocalPlayerName[MAX_PATH]; BOOL m_bSearchingForSessions; BOOL m_bEnumListChanged; DPNHANDLE m_hEnumAsyncOp; DWORD m_dwEnumHostExpireInterval; BOOL m_bConnecting; DPNHANDLE m_hConnectAsyncOp; HANDLE m_hConnectCompleteEvent; HANDLE m_hLobbyConnectionEvent; HRESULT m_hrConnectComplete; BOOL m_bHaveConnectionSettingsFromLobby; DPNHANDLE m_hLobbyClient; }; #endif // NETCLIENT_H