⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chooseserverdlg.h

📁 基于widcomm的蓝牙传输功能程序
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
//
//  Name        ChooseServerDlg.h
//  $Header:
//
//  Function    this file contains the declarations for the CChooseServerDlg
//              class which is the dialog for choosing a Chat Server.
//
//  Date                         Modification
//  -----------------------------------------
//  5Jun2001    Jim French  Create
//
//  Copyright (c) 2000-2006, Broadcom Corporation, All Rights Reserved.
//
//////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_CHOOSESERVERDLG_H__9A90A1C8_6C4A_4F84_9864_C89884BB8073__INCLUDED_)
#define AFX_CHOOSESERVERDLG_H__9A90A1C8_6C4A_4F84_9864_C89884BB8073__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "btwlib.h"


/////////////////////////////////////
//
// Handy class for holding Device
// information held in the item list.
//
class CBdInfo
{
public:

    CBdInfo() : m_Scn(0) { m_Name = ""; m_serviceName[0] = 0;  memset (m_BdAddr, 0, BD_ADDR_LEN); }
    CBdInfo(BD_ADDR bd_addr, BD_NAME bd_name) : m_Scn(0), m_Name(bd_name) { m_serviceName[0] = 0; memcpy (m_BdAddr, bd_addr, BD_ADDR_LEN); }
    ~CBdInfo() { ; }
    BOOL isBdAddrEqual(BD_ADDR bd_addr) { return (0 == memcmp(m_BdAddr, bd_addr, sizeof(BD_ADDR))); }
    CString DeviceAsString()
    {
        CString s;

        // Default the string to the BD Address only.
        //
        s.Format("[%x:%x:%x:%x:%x:%x]", m_BdAddr[0], m_BdAddr[1], m_BdAddr[2], m_BdAddr[3], m_BdAddr[4], m_BdAddr[5]);

        // If friendly name provided then prepend it.
        //
        if (m_Name.GetLength())
            s = m_Name + " " + s;

        return s;
    }
    CString LabelAsString()
    {
        CString label(DeviceAsString());

        // add the service name
        label += " ";
        label += m_serviceName;

        return label;
    }

    BD_ADDR     m_BdAddr;
    CString     m_Name;     // device 'friendly' name
    UINT8       m_Scn;
    char        m_serviceName[BT_MAX_SERVICE_NAME_LEN + 1];

};


/////////////////////////////////////////////////////////////////////////////
// CChooseServerDlg dialog

class CChooseServerDlg : public CDialog, public CBtIf
{
// Construction
public:
	CChooseServerDlg(CWnd* pParent = NULL);   // standard constructor
    ~CChooseServerDlg();

// Dialog Data
	//{{AFX_DATA(CChooseServerDlg)
	enum { IDD = IDD_CHOOSE_SERVER_DIALOG };
	CButton	m_DiscoverButton;
	CButton	m_OkButton;
	CListCtrl	m_ServerList;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CChooseServerDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Attributes
public:
   	CWinThread* m_pDiscoveryWorkerThread;
	HANDLE m_hEventStopDiscoveryThread;
	HANDLE m_hEventDiscoveryThreadKilled;
    BOOLEAN m_isDialogClosing;
    BOOLEAN m_wasDialogInterrupted;

    UINT8 m_Scn;
    BD_ADDR m_BdAddr;
    GUID* m_pServiceGuid;
    char        m_serviceName[BT_MAX_SERVICE_NAME_LEN + 1];
    CString     m_Name; // remote server's friendly name

// Operations
public:
	void DoAddDevice(BD_ADDR p_bda, BD_NAME bd_name);


private:
    // methods to replace virtual methods in base class CBtIf 
    void OnDeviceResponded (BD_ADDR bda, DEV_CLASS devClass, BD_NAME bdName, BOOL bConnected);
    void OnDiscoveryComplete ();
    void OnInquiryComplete (BOOL success, short num_responses);

    int m_num_services_per_device;
#define MAX_SERVICES_PER_DEVICE    20
    CSdpDiscoveryRec    m_si[MAX_SERVICES_PER_DEVICE];

    int m_num_devices;
#define MAX_SERVER_DEVICES 40
    CBdInfo  *           m_pDevInfo[MAX_SERVER_DEVICES];    

    // Implementation
protected:

    static UINT DiscoverServices(LPVOID pParam);

	// Generated message map functions
	//{{AFX_MSG(CChooseServerDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnClickServerList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDestroy();
	afx_msg void OnDiscoverButton();
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

private:
        UINT_PTR m_timer_id;
        BOOL     m_start_discovery;
		BOOL	 m_discovery_in_progress;
        BD_ADDR m_BdAddrFilter;
        void GetBDAFilterFromReg();
        BOOL string2BDAddr(BD_ADDR bdAddr, char *lpbdAddrString);
    
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHOOSESERVERDLG_H__9A90A1C8_6C4A_4F84_9864_C89884BB8073__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -