[VC(Visual C++) ]- GPSDataSave程式
本篇分享GPSDataSave程式串程式範例,有興趣的(C/P)同好,歡迎來http://filemarkets.com/file/jashliao/a9006d21/索取,因為我不會上傳檔案分享哈哈 ^ ^。
主要程式碼  | 
001 // GPSDataSaveDlg.cpp : implementation file 002 // 003                    004 #include "stdafx.h" 005 #include "GPSDataSave.h" 006 #include "GPSDataSaveDlg.h" 007 #include <stdio.h> 008 #ifdef _DEBUG 009 #definenew DEBUG_NEW 010 #undef THIS_FILE 011 staticchar THIS_FILE[] = __FILE__; 012 #endif 013    FILE *p;                014    CString strdata[30];                015 ///////////////////////////////////////////////////////////////////////////// 016 // CAboutDlg dialog used for App About 017                    018 class CAboutDlg : public CDialog 019    {                020 public: 021        CAboutDlg();            022                    023 // Dialog Data 024 //{{AFX_DATA(CAboutDlg) 025 enum { IDD = IDD_ABOUTBOX }; 026 //}}AFX_DATA 027                    028 // ClassWizard generated virtual function overrides 029 //{{AFX_VIRTUAL(CAboutDlg) 030 protected: 031 virtualvoid DoDataExchange(CDataExchange* pDX); // DDX/DDV support 032 //}}AFX_VIRTUAL 033                    034 // Implementation 035 protected: 036 //{{AFX_MSG(CAboutDlg) 037 //}}AFX_MSG 038        DECLARE_MESSAGE_MAP()            039    };                040                    041    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)                042    {                043 //{{AFX_DATA_INIT(CAboutDlg) 044 //}}AFX_DATA_INIT 045    }                046                    047 void CAboutDlg::DoDataExchange(CDataExchange* pDX) 048    {                049        CDialog::DoDataExchange(pDX);            050 //{{AFX_DATA_MAP(CAboutDlg) 051 //}}AFX_DATA_MAP 052    }                053                    054    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)                055 //{{AFX_MSG_MAP(CAboutDlg) 056 // No message handlers 057 //}}AFX_MSG_MAP 058    END_MESSAGE_MAP()                059                    060 ///////////////////////////////////////////////////////////////////////////// 061 // CGPSDataSaveDlg dialog 062                    063 CGPSDataSaveDlg::CGPSDataSaveDlg(CWnd* pParent /*=NULL*/) 064        : CDialog(CGPSDataSaveDlg::IDD, pParent)            065    {                066 //{{AFX_DATA_INIT(CGPSDataSaveDlg) 067 // NOTE: the ClassWizard will add member initialization here 068 //}}AFX_DATA_INIT 069 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 070 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 071    }                072                    073 void CGPSDataSaveDlg::DoDataExchange(CDataExchange* pDX) 074    {                075        CDialog::DoDataExchange(pDX);            076 //{{AFX_DATA_MAP(CGPSDataSaveDlg) 077 // NOTE: the ClassWizard will add DDX and DDV calls here 078 //}}AFX_DATA_MAP 079    }                080                    081    BEGIN_MESSAGE_MAP(CGPSDataSaveDlg, CDialog)                082 //{{AFX_MSG_MAP(CGPSDataSaveDlg) 083        ON_WM_SYSCOMMAND()            084        ON_WM_PAINT()            085        ON_WM_QUERYDRAGICON()            086        ON_BN_CLICKED(IDC_BUTTON1, OnButton1)            087        ON_BN_CLICKED(IDC_BUTTON2, OnButton2)            088        ON_WM_TIMER()            089 //}}AFX_MSG_MAP 090    END_MESSAGE_MAP()                091                    092 ///////////////////////////////////////////////////////////////////////////// 093 // CGPSDataSaveDlg message handlers 094                    095    BOOL CGPSDataSaveDlg::OnInitDialog()                096    {                097        CDialog::OnInitDialog();            098                    099 // Add "About..." menu item to system menu. 100                    101 // IDM_ABOUTBOX must be in the system command range. 102        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);            103        ASSERT(IDM_ABOUTBOX < 0xF000);            104                    105        CMenu* pSysMenu = GetSystemMenu(FALSE);            106 if (pSysMenu != NULL) 107        {            108            CString strAboutMenu;        109            strAboutMenu.LoadString(IDS_ABOUTBOX);        110 if (!strAboutMenu.IsEmpty()) 111            {        112                pSysMenu->AppendMenu(MF_SEPARATOR);    113                pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);    114            }        115        }            116                    117 // Set the icon for this dialog. The framework does this automatically 118 // when the application's main window is not a dialog 119 SetIcon(m_hIcon, TRUE); // Set big icon 120 SetIcon(m_hIcon, FALSE); // Set small icon 121                    122 // TODO: Add extra initialization here 123                    124 return TRUE; // return TRUE unless you set the focus to a control 125    }                126                    127 void CGPSDataSaveDlg::OnSysCommand(UINT nID, LPARAM lParam) 128    {                129 if ((nID & 0xFFF0) == IDM_ABOUTBOX) 130        {            131            CAboutDlg dlgAbout;        132            dlgAbout.DoModal();        133        }            134 else 135        {            136            CDialog::OnSysCommand(nID, lParam);        137        }            138    }                139                    140 // If you add a minimize button to your dialog, you will need the code below 141 // to draw the icon. For MFC applications using the document/view model, 142 // this is automatically done for you by the framework. 143                    144 void CGPSDataSaveDlg::OnPaint() 145    {                146 if (IsIconic()) 147        {            148 CPaintDC dc(this); // device context for painting 149                    150            SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);        151                    152 // Center icon in client rectangle 153 int cxIcon = GetSystemMetrics(SM_CXICON); 154 int cyIcon = GetSystemMetrics(SM_CYICON); 155            CRect rect;        156            GetClientRect(&rect);        157 int x = (rect.Width() - cxIcon + 1) / 2; 158 int y = (rect.Height() - cyIcon + 1) / 2; 159                    160 // Draw the icon 161            dc.DrawIcon(x, y, m_hIcon);        162        }            163 else 164        {            165            CDialog::OnPaint();        166        }            167    }                168                    169 // The system calls this to obtain the cursor to display while the user drags 170 // the minimized window. 171    HCURSOR CGPSDataSaveDlg::OnQueryDragIcon()                172    {                173 return (HCURSOR) m_hIcon; 174    }                175                    176 void CGPSDataSaveDlg::OnButton1() 177    {                178 // TODO: Add your control notification handler code here 179        p=fopen("data.txt","w");            180        RS.OpenCom(4,4800,8,0,1);             181        SetTimer(1,1000,NULL);            182 //n=StringRipFunction(data,14); 183                    184    }                185 int CGPSDataSaveDlg::StringRipFunction(unsignedchar str[],long number) 186    {                187 int i=0,j=0; 188 for(j=0;j<30;j++) 189            strdata[j]="";        190        j=0;            191 for(i=0;i<number;i++) 192        {            193 if(str[i]!=13 && str[i]!=10) 194            {        195                strdata[j]+=str[i];    196            }        197 else 198            {        199 if(str[i]==13) 200                    j++;201            }        202        }            203 for(i=0;i<j;i++) 204        {            205            fprintf(p,"%s\n",strdata[i].GetBuffer(0));         206        }            207 return j; 208    }                209                    210 void CGPSDataSaveDlg::OnButton2() 211    {                212 // TODO: Add your control notification handler code here 213        KillTimer(1);            214        RS.Close();             215        fclose(p);            216    }                217                    218 void CGPSDataSaveDlg::OnTimer(UINT nIDEvent) 219    {                220 // TODO: Add your message handler code here and/or call default 221 unsignedchar data[1024]={'\0'}; 222 long n=0,n1=0; 223        RS.Read(data,&n);            224        n=StringRipFunction(data,n);            225        CDialog::OnTimer(nIDEvent);            226    }                 | 
沒有留言:
張貼留言