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

📄 gpssetup.cpp

📁 这是一个简单的软件开发包(SDK)
💻 CPP
字号:
#include "stdafx.h"
#include <gps.h>
#include "gpssetup.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif



void DDX_CBData(CDataExchange* pDX, int nIDC, DWORD& dwData)
{
	HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
	if (pDX->m_bSaveAndValidate)
	{
    int nSelected = ::SendMessage(hWndCtrl, CB_GETCURSEL, 0, 0L);
    dwData = ::SendMessage(hWndCtrl, CB_GETITEMDATA, nSelected, 0L);
	}
	else
	{
    int nCount = ::SendMessage(hWndCtrl, CB_GETCOUNT, 0, 0L);
    for (int i=0; i<nCount; i++)
    {
      DWORD dwItemData = ::SendMessage(hWndCtrl, CB_GETITEMDATA, i, 0L);
      if (dwItemData == dwData)
      {
        ::SendMessage(hWndCtrl, CB_SETCURSEL, i, 0L);
        break;
      }
    }
	}
}

void CBAddStringAndData(CWnd* pParent, int nIDC, const CString& sValue, DWORD dwData)
{
  HWND hWndCtrl = ::GetDlgItem(pParent->GetSafeHwnd(), nIDC);
  int nIndex = ::SendMessage(hWndCtrl, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) sValue);
  ::SendMessage(hWndCtrl, CB_SETITEMDATA, nIndex, dwData);
}


IMPLEMENT_DYNCREATE(CGeneralPropertyPage, CPropertyPage)

CGeneralPropertyPage::CGeneralPropertyPage() : CPropertyPage(CGeneralPropertyPage::IDD)
{
	//{{AFX_DATA_INIT(CGeneralPropertyPage)
	m_bDefault = FALSE;
	//}}AFX_DATA_INIT

  m_dwStopBits = GpsStopBits1;
  m_dwPort = 1;
  m_dwParity = GpsParityNone;
  m_dwBaudRate = 4800;
  m_dwDataBits = 8;
}

CGeneralPropertyPage::~CGeneralPropertyPage()
{
}

void CGeneralPropertyPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CGeneralPropertyPage)
	DDX_Control(pDX, IDC_STOPBITS, m_ctrlStopBits);
  DDX_Control(pDX, IDC_DATABITS, m_ctrlDataBits);
	DDX_Control(pDX, IDC_PORT, m_ctrlPort);
	DDX_Control(pDX, IDC_PARITY, m_ctrlParity);
	DDX_Control(pDX, IDC_BAUDRATE, m_ctrlBaudRate);
	DDX_Check(pDX, IDC_DEFAULT, m_bDefault);
	//}}AFX_DATA_MAP

  DDX_CBData(pDX, IDC_STOPBITS, m_dwStopBits);
  DDX_CBData(pDX, IDC_PORT, m_dwPort);
  DDX_CBData(pDX, IDC_DATABITS, m_dwDataBits);
  DDX_CBData(pDX, IDC_PARITY, m_dwParity);
  DDX_CBData(pDX, IDC_BAUDRATE, m_dwBaudRate);
}


BEGIN_MESSAGE_MAP(CGeneralPropertyPage, CPropertyPage)
	//{{AFX_MSG_MAP(CGeneralPropertyPage)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()




IMPLEMENT_DYNAMIC(CPropertiesPropertySheet, CPropertySheet)

CPropertiesPropertySheet::CPropertiesPropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
  AddPage(&m_Page1);
}

CPropertiesPropertySheet::CPropertiesPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
  AddPage(&m_Page1);
}

CPropertiesPropertySheet::~CPropertiesPropertySheet()
{
}


BEGIN_MESSAGE_MAP(CPropertiesPropertySheet, CPropertySheet)
	//{{AFX_MSG_MAP(CPropertiesPropertySheet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CGeneralPropertyPage::OnInitDialog() 
{
  //add the strings to the combo boxes

  //First the port number combo
  for (DWORD i=1; i<=4; i++)
  {
    CString sPort;
    sPort.Format(_T("COM%d"), i);
    CBAddStringAndData(this, IDC_PORT, sPort, i);
  }

  //then the stop bits
  CString sStop;
  sStop.LoadString(IDS_STOPBIT_1);
  CBAddStringAndData(this, IDC_STOPBITS, sStop, GpsStopBits1);
  sStop.LoadString(IDS_STOPBIT_1POINT5);
  CBAddStringAndData(this, IDC_STOPBITS, sStop, GpsStopBits1Point5);
  sStop.LoadString(IDS_STOPBIT_2);
  CBAddStringAndData(this, IDC_STOPBITS, sStop, GpsStopBits2);

  //then the parity
  CString sParity;
  sParity.LoadString(IDS_PARITY_EVEN);
  CBAddStringAndData(this, IDC_PARITY, sParity, GpsParityEven);
  sParity.LoadString(IDS_PARITY_ODD);
  CBAddStringAndData(this, IDC_PARITY, sParity, GpsParityOdd);
  sParity.LoadString(IDS_PARITY_NONE);
  CBAddStringAndData(this, IDC_PARITY, sParity, GpsParityNone);

  //then the data bits
  CString sDataBits;
  sDataBits.Format(_T("%d"), 7);
  CBAddStringAndData(this, IDC_DATABITS, sDataBits, 7);
  sDataBits.Format(_T("%d"), 8);
  CBAddStringAndData(this, IDC_DATABITS, sDataBits, 8);

  //then the baud rate
  CBAddStringAndData(this, IDC_BAUDRATE, _T("75"), 75);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("110"), 110);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("134"), 134);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("150"), 150);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("300"), 300);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("600"), 600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("1200"), 1200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("1800"), 1800);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("2400"), 2400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("4800"), 4800);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("7200"), 7200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("9600"), 9600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("14400"), 14400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("19200"), 19200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("38400"), 38400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("57600"), 57600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("115200"), 115200);

  //let the parent do its stuff
	CPropertyPage::OnInitDialog();
	
  return TRUE;
}



IMPLEMENT_DYNCREATE(CWizSetupPage1, CPropertyPage)

CWizSetupPage1::CWizSetupPage1() : CPropertyPage(CWizSetupPage1::IDD)
{
	//{{AFX_DATA_INIT(CWizSetupPage1)
	//}}AFX_DATA_INIT
}

CWizSetupPage1::~CWizSetupPage1()
{
}

void CWizSetupPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizSetupPage1)
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizSetupPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CWizSetupPage1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CWizSetupPage1::OnSetActive() 
{
	CPropertySheet* pParent = STATIC_DOWNCAST(CPropertySheet, GetParent());
  ASSERT(pParent);
  pParent->SetWizardButtons(PSWIZB_NEXT);
	
	return CPropertyPage::OnSetActive();
}



IMPLEMENT_DYNCREATE(CWizSetupPage2, CPropertyPage)

CWizSetupPage2::CWizSetupPage2() : CPropertyPage(CWizSetupPage2::IDD)
{
	//{{AFX_DATA_INIT(CWizSetupPage2)
	//}}AFX_DATA_INIT

  m_dwPort = 1;
  m_dwBaudRate = 4800;
}

CWizSetupPage2::~CWizSetupPage2()
{
}

void CWizSetupPage2::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizSetupPage2)
	DDX_Control(pDX, IDC_PORT, m_ctrlPort);
	DDX_Control(pDX, IDC_BAUDRATE, m_ctrlBaudRate);
	//}}AFX_DATA_MAP

  DDX_CBData(pDX, IDC_PORT, m_dwPort);
  DDX_CBData(pDX, IDC_BAUDRATE, m_dwBaudRate);
}


BEGIN_MESSAGE_MAP(CWizSetupPage2, CPropertyPage)
	//{{AFX_MSG_MAP(CWizSetupPage2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CWizSetupPage2::OnSetActive() 
{
	CPropertySheet* pParent = STATIC_DOWNCAST(CPropertySheet, GetParent());
  ASSERT(pParent);
  pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
	
	return CPropertyPage::OnSetActive();
}




IMPLEMENT_DYNCREATE(CWizSetupPage3, CPropertyPage)

CWizSetupPage3::CWizSetupPage3() : CPropertyPage(CWizSetupPage3::IDD)
{
	//{{AFX_DATA_INIT(CWizSetupPage3)
	m_nMakeDefault = -1;
	m_sName = _T("");
	//}}AFX_DATA_INIT

  m_nMakeDefault = 0;
}

CWizSetupPage3::~CWizSetupPage3()
{
}

void CWizSetupPage3::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizSetupPage3)
	DDX_Control(pDX, IDC_NAME, m_ctrlName);
	DDX_Radio(pDX, IDC_YESDEFAULT, m_nMakeDefault);
	DDX_Text(pDX, IDC_NAME, m_sName);
	//}}AFX_DATA_MAP

  DDV_MaxChars(pDX, m_sName, GPS_MaxDeviceName);

  if (pDX->m_bSaveAndValidate)
  {
    if (GpsDeviceNameAlreadyExists(m_sName))
    {
      pDX->PrepareEditCtrl(IDC_NAME);
      CString sMsg;
      AfxFormatString1(sMsg, IDS_WIZ_NON_UNIQUE_NAME, m_sName);
      AfxMessageBox(sMsg);
      pDX->Fail();
    }
  }
}


BEGIN_MESSAGE_MAP(CWizSetupPage3, CPropertyPage)
	//{{AFX_MSG_MAP(CWizSetupPage3)
	ON_EN_CHANGE(IDC_NAME, OnChangeName)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CWizSetupPage3::OnSetActive() 
{
  //update the wizard buttons
  OnChangeName();

	return CPropertyPage::OnSetActive();
}

void CWizSetupPage3::OnChangeName() 
{
	CPropertySheet* pParent = STATIC_DOWNCAST(CPropertySheet, GetParent());
  ASSERT(pParent);

  int nLength = m_ctrlName.GetWindowTextLength();

  if (nLength)
    pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
  else
    pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_DISABLEDFINISH);
}

BOOL CWizSetupPage3::OnWizardFinish() 
{
	if (UpdateData(TRUE))
  	return CPropertyPage::OnWizardFinish();
  else
    return FALSE;
}



IMPLEMENT_DYNAMIC(CInstallPropertySheet, CPropertySheet)

CInstallPropertySheet::CInstallPropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
  SetWizardMode();
  AddPage(&m_Page1);
  AddPage(&m_Page2);
  AddPage(&m_Page3);
}

CInstallPropertySheet::CInstallPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
  SetWizardMode();
  AddPage(&m_Page1);
  AddPage(&m_Page2);
  AddPage(&m_Page3);
}

CInstallPropertySheet::~CInstallPropertySheet()
{
}


BEGIN_MESSAGE_MAP(CInstallPropertySheet, CPropertySheet)
	//{{AFX_MSG_MAP(CInstallPropertySheet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CWizSetupPage2::OnInitDialog() 
{
  //add the strings to the combo boxes

  //First the port number combo
  for (DWORD i=1; i<=4; i++)
  {
    CString sPort;
    sPort.Format(_T("COM%d"), i);
    CBAddStringAndData(this, IDC_PORT, sPort, i);
  }

  //then the baud rate
  CBAddStringAndData(this, IDC_BAUDRATE, _T("75"), 75);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("110"), 110);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("134"), 134);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("150"), 150);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("300"), 300);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("600"), 600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("1200"), 1200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("1800"), 1800);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("2400"), 2400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("4800"), 4800);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("7200"), 7200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("9600"), 9600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("14400"), 14400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("19200"), 19200);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("38400"), 38400);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("57600"), 57600);
  CBAddStringAndData(this, IDC_BAUDRATE, _T("115200"), 115200);

  //let the parent do its stuff
	CPropertyPage::OnInitDialog();
	
	return TRUE;
}







⌨️ 快捷键说明

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