Yao Chunli
2022-06-21 e00d5a1575d26f8fec1be6fa8a844203cd66a24c
提交 | 用户 | age
65f713 1 // DialogFactCfg.cpp: 实现文件
Q 2 //
3
4 #include "pch.h"
5 #include "MTerm2.h"
6 #include "DialogFactCfg.h"
7 #include "afxdialogex.h"
8
9 #include "MTerm2Doc.h"
10
11 // CDialogFactCfg 对话框
12
13 IMPLEMENT_DYNAMIC(CDialogFactCfg, CDialogEx)
14
15 CDialogFactCfg::CDialogFactCfg(CWnd* pParent /*=nullptr*/)
16     : CDialogEx(IDD_DIALOG_FACT_CFG, pParent)
17 {
18     InitDataItems();
19 }
20
21 CDialogFactCfg::~CDialogFactCfg()
22 {
23 }
24
25 void CDialogFactCfg::DoDataExchange(CDataExchange* pDX)
26 {
27     CDialogEx::DoDataExchange(pDX);
28 }
29
30
31 BEGIN_MESSAGE_MAP(CDialogFactCfg, CDialogEx)
32     ON_BN_CLICKED(IDC_BUTTON_CONN, &CDialogFactCfg::OnBnClickedButtonConn)
33     ON_BN_CLICKED(IDC_BUTTON_DISCONN, &CDialogFactCfg::OnBnClickedButtonDisconn)
34     ON_BN_CLICKED(IDC_BUTTON_READDATA, &CDialogFactCfg::OnBnClickedButtonReaddata)
35     ON_BN_CLICKED(IDC_BUTTON_WRITEDATA, &CDialogFactCfg::OnBnClickedButtonWritedata)
e00d5a 36
YC 37     ON_BN_CLICKED(IDC_BUTTON1, &CDialogFactCfg::OnBnClickedBtn1)
38     ON_BN_CLICKED(IDC_BUTTON3, &CDialogFactCfg::OnBnClickedBtn3)
39     ON_BN_CLICKED(IDC_BUTTON4, &CDialogFactCfg::OnBnClickedBtn4)
40     ON_BN_CLICKED(IDC_BUTTON5, &CDialogFactCfg::OnBnClickedBtn5)
41     ON_BN_CLICKED(IDC_BUTTON_CLEAR, &CDialogFactCfg::OnBnClickedBtnClear)
42     ON_BN_CLICKED(IDC_BUTTON_ADD, &CDialogFactCfg::OnBnClickedBtnAdd)
43     ON_BN_CLICKED(IDC_BUTTON_BACKSPACE, &CDialogFactCfg::OnBnClickedBtnBackSpace)
44
45
46     ON_BN_CLICKED(IDC_BUTTON_0, &CDialogFactCfg::OnBnClickedButton0)
47     ON_BN_CLICKED(IDC_BUTTON1_DOT, &CDialogFactCfg::OnBnClickedButton1Dot)
48     ON_BN_CLICKED(IDC_BUTTON_EQ, &CDialogFactCfg::OnBnClickedButtonEq)
65f713 49 END_MESSAGE_MAP()
Q 50
51 // CDialogFactCfg 消息处理程序
52 int CDialogFactCfg::AddDataItem(int nOffset, int nSize, int nType, CString sName)
53 {
54     FactoryDataItems[nFactoryDataItemsCount] = { nOffset,nSize,nType,sName };
55     nFactoryDataItemsCount++;
56     return 0;
57 }
58
59 int CDialogFactCfg::InitDataItems()
60 {
61     AddDataItem(0, 2, typeBIN, _T("开始标志"));
62     AddDataItem(2, 2, typeINT, _T("序号"));
63     AddDataItem(4, 2, typeHEX, _T("ModelNo"));
64     AddDataItem(6, 2, typeHEX, _T("ModelVer"));
65     AddDataItem(8, 4, typeUINT, _T("nLotNo"));
66     AddDataItem(12, 4, typeDATETIME, _T("nProductDate"));
67     AddDataItem(16, 4, typeHEX, _T("nSN1"));
68     AddDataItem(20, 4, typeHEX, _T("nProtocalVer"));
69     AddDataItem(24, 4, typeHEX, _T("nDefaultFuncr"));
70     AddDataItem(28, 16, typeString, _T("sModelStr"));
71     AddDataItem(44, 16, typeString, _T("sLot_No"));
72     AddDataItem(60, 16, typeString, _T("sSNStr"));
73     AddDataItem(76, 2, typeHEX, _T("CRC1"));
74     AddDataItem(78, 2, typeHEX, _T("EndSign"));
75     return 0;
76 }
77
78 int CDialogFactCfg::FindIdByName(CString sName)
79 {
80     for (int i = 0; i < nFactoryDataItemsCount; i++)    {
81         if (FactoryDataItems[i].sName == sName)    {
82             return i;
83         }
84     }
85     return -1;
86 }
87
88 int CDialogFactCfg::GetDataByOffset(void * pDataBlock, int nOffset)
89 {
90     return 0;
91 }
92 int CDialogFactCfg::GetDataByName(void * pDataBlock, CString sName)
93 {
94     return 0;
95 }
96 CString CDialogFactCfg::GetDataStrByName(void * pDataBlock, CString sName)
97 {
98     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
99     CString s1;
100     UCHAR buf3[256];
101     CString s3;
102     int nIdx = FindIdByName(sName);
103     if (nIdx >= 0)
104     {
105         CTime ctime1;
106         int nType = FactoryDataItems[nIdx].nType;
107         int nSize = FactoryDataItems[nIdx].nSize;
108         int nOffset = FactoryDataItems[nIdx].nOffset;
109         int nValue;
110         UINT uValue;
111         switch (nType)
112         {
113         case typeINT:
114             if (nSize == 1) {
115                 nValue = *((char *)(pBuf2 + nOffset));
116             }
117             else if (nSize == 2) {
118                 nValue = *(short *)(pBuf2 + nOffset);
119             }
120             else if (nSize == 3) {
121
122             }
123             else if (nSize == 4) {
124                 nValue = *(int *)(pBuf2 + nOffset);
125             }
126             s1.Format(_T("%d"), nValue);
127             break;
128         case typeUINT:
129             if (nSize == 1) {
130                 uValue = *((UCHAR *)(pBuf2 + nOffset));
131             }
132             else if (nSize == 2) {
133                 uValue = *(USHORT *)(pBuf2 + nOffset);
134             }
135             else if (nSize == 3) {
136
137             }
138             else if (nSize == 4) {
139                 uValue = *(UINT *)(pBuf2 + nOffset);
140             }
141             s1.Format(_T("%u"), uValue);
142             break;
143         case typeHEX:
144             if (nSize == 1) {
145                 uValue = *((UCHAR *)(pBuf2 + nOffset));
146                 s1.Format(_T("%02X"), uValue);
147             }
148             else if (nSize == 2) {
149                 uValue = *(USHORT *)(pBuf2 + nOffset);
150                 s1.Format(_T("%04X"), uValue);
151             }
152             else if (nSize == 3) {
153
154             }
155             else if (nSize == 4) {
156                 uValue = *(UINT *)(pBuf2 + nOffset);
157                 s1.Format(_T("%08X"), uValue);
158             }
159
160             break;
161         case typeBIN:
162             if (nSize == 1) {
163                 uValue = *((UCHAR *)(pBuf2 + nOffset));
164                 s1.Format(_T("%02X"), uValue);
165             }
166             else if (nSize == 2) {
167                 uValue = *(USHORT *)(pBuf2 + nOffset);
168                 s1.Format(_T("%04X"), uValue);
169             }
170             else if (nSize == 3) {
171
172             }
173             else if (nSize == 4) {
174                 uValue = *(UINT *)(pBuf2 + nOffset);
175                 s1.Format(_T("%08X"), uValue);
176             }
177
178             break;
179         case typeFLOAT:
180             break;
181         case typeFIX:
182             break;
183         case typeBIT:
184             break;
185         case typeString:
186             for (int j = 0; j < nSize; j++)
187             {
188                 buf3[j] = pBuf2[nOffset + j];
189             }
190             buf3[nSize] = 0;
191             s3 = buf3;
192             s1.Format(_T("%s"), s3);
193             break;
194         case typeDATETIME:
195             nValue = *(UINT *)(pBuf2 + nOffset);
196             ctime1 = nValue;
197             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
198             ctime1 += nValue;
199             s3 = ctime1.Format(_T("%Y-%m-%d %H:%M:%S"));
200             s1.Format(_T("%s"), s3);
201             break;
202         default:
203             break;
204         }
205     }
206     return s1;
207 }
208 int CDialogFactCfg::SetDataByName(void * pDataBlock, CString sName, UINT uValue)
209 {
210     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
211 //    UCHAR buf3[256];
212     int nIdx = FindIdByName(sName);
213     if (nIdx >= 0)
214     {
215         CTime ctime1;
216         CTime ctime2;
217         CTimeSpan ctime3;
218         int nType = FactoryDataItems[nIdx].nType;
219         int nSize = FactoryDataItems[nIdx].nSize;
220         int nOffset = FactoryDataItems[nIdx].nOffset;
221         int nValue;
222         switch (nType)
223         {
224         case typeINT:
225             if (nSize == 1) {
226                 *((char *)(pBuf2 + nOffset)) = uValue;
227             }
228             else if (nSize == 2) {
229                 *(short *)(pBuf2 + nOffset) = uValue;
230             }
231             else if (nSize == 3) {
232
233             }
234             else if (nSize == 4) {
235                 *(int *)(pBuf2 + nOffset) = uValue;
236             }
237             break;
238         case typeUINT:
239             if (nSize == 1) {
240                 *((UCHAR *)(pBuf2 + nOffset)) = uValue;
241             }
242             else if (nSize == 2) {
243                 *(USHORT *)(pBuf2 + nOffset) = uValue;
244             }
245             else if (nSize == 3) {
246
247             }
248             else if (nSize == 4) {
249                 *(UINT *)(pBuf2 + nOffset) = uValue;
250             }
251             break;
252         case typeBIN:
253             if (nSize == 1) {
254                 *((UCHAR *)(pBuf2 + nOffset)) = uValue;
255             }
256             else if (nSize == 2) {
257                 *(USHORT *)(pBuf2 + nOffset) = uValue;
258             }
259             else if (nSize == 3) {
260
261             }
262             else if (nSize == 4) {
263                 *(UINT *)(pBuf2 + nOffset) = uValue;
264             }
265
266             break;
267         case typeFLOAT:
268             break;
269         case typeFIX:
270             break;
271         case typeBIT:
272             break;
273         case typeString:
274             break;
275         case typeDATETIME:
276             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
277             ctime2 = uValue;
278             ctime3 = ctime2 - ctime1;
279             nValue = ctime3.GetTotalSeconds();
280             *(UINT *)(pBuf2 + nOffset) = uValue;
281
282             break;
283         default:
284             break;
285         }
286     }
287     return 0;
288 }
289 int CDialogFactCfg::SetDataByName(void * pDataBlock, CString sName, CString sValue)
290 {
291     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
292 //    UCHAR buf3[256];
293     CStringA s3;
294     int nIdx = FindIdByName(sName);
295     if (nIdx >= 0)
296     {
297         CTime ctime1;
298         CTime ctime2;
299         CTimeSpan ctime3;
300         int nType = FactoryDataItems[nIdx].nType;
301         int nSize = FactoryDataItems[nIdx].nSize;
302         int nOffset = FactoryDataItems[nIdx].nOffset;
303         int nValue;
304         int len;
305         switch (nType)
306         {
307         case typeINT:
308             if (nSize == 1) {
309                 *((char *)(pBuf2 + nOffset)) = _tstoi(sValue);
310             }
311             else if (nSize == 2) {
312                 *(short *)(pBuf2 + nOffset) = _tstoi(sValue);
313             }
314             else if (nSize == 3) {
315
316             }
317             else if (nSize == 4) {
318                 *(int *)(pBuf2 + nOffset) = _tstoi(sValue);
319             }
320             break;
321         case typeUINT:
322             if (nSize == 1) {
323                 *((UCHAR *)(pBuf2 + nOffset)) = _tstoi(sValue);
324             }
325             else if (nSize == 2) {
326                 *(USHORT *)(pBuf2 + nOffset) = _tstoi(sValue);
327             }
328             else if (nSize == 3) {
329
330             }
331             else if (nSize == 4) {
332                 *(UINT *)(pBuf2 + nOffset) = _tstoi(sValue);
333             }
334             break;
335         case typeBIN:
336             if (nSize == 1) {
337                 *((UCHAR *)(pBuf2 + nOffset)) = _tstoi(sValue);
338             }
339             else if (nSize == 2) {
340                 *(USHORT *)(pBuf2 + nOffset) = _tstoi(sValue);
341             }
342             else if (nSize == 3) {
343
344             }
345             else if (nSize == 4) {
346                 *(UINT *)(pBuf2 + nOffset) = _tstoi(sValue);
347             }
348
349             break;
350         case typeFLOAT:
351             break;
352         case typeFIX:
353             break;
354         case typeBIT:
355             break;
356         case typeString:
357             s3 = sValue;
358             len = s3.GetLength();
359             for (int j = 0; j < nSize; j++) {
360                 if (j < len) {
361                     pBuf2[nOffset + j] = s3[j];
362                 }else {
363                     pBuf2[nOffset + j] = ' ';
364                 }
365             }
366             break;
367         case typeDATETIME:
368             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
369             ctime2 = CStringToCTime(sValue);;
370             ctime3 = ctime2 - ctime1;
371             nValue = ctime3.GetTotalSeconds();
372             *(UINT *)(pBuf2 + nOffset) = nValue;
373
374             break;
375         default:
376             break;
377         }
378     }
379     return 0;
380 }
381
382
383
384 CMTerm2Doc * CDialogFactCfg::GetDocument()
385 {
386     // TODO: 在此处添加实现代码.
387     CMDIFrameWnd  *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
388     CMDIChildWnd  *pChild = (CMDIChildWnd   *)pFrame->GetActiveFrame();
389     CView   *pV = (CView*)pChild->GetActiveView();
390     CMTerm2Doc* pDoc = (CMTerm2Doc *)(pV->GetDocument());
391     return pDoc;
392 }
393
394 int CDialogFactCfg::Connect()
395 {
396     // TODO: 在此处添加实现代码.
397     CString s1;
398     CMTerm2Doc* pDoc = (CMTerm2Doc *)GetDocument();
399
400
401     int r = pDoc->Connect();
402     s1.Format(_T("Open %s  = %d"), pDoc->myHvSerialPort1.m_strResult, r);
403     SysLog(s1);
404     if (r == pDoc->myHvSerialPort1.R_OK)
405     {
406         pDoc->MyKLink1.Open();
407         return false;
408     }
409     return true;
410     return 0;
411 }
412
413
414 int CDialogFactCfg::Disconnect()
415 {
416     // TODO: 在此处添加实现代码.
417     CMTerm2Doc* pDoc = (CMTerm2Doc *)GetDocument();
418     
419     pDoc->DisConnect();
420     pDoc->MyKLink1.Close();
421     return 0;
422 }
423
424 int CDialogFactCfg::ReadData()
425 {
426     CMTerm2Doc* pDoc = (CMTerm2Doc *)GetDocument();
427
428     unsigned short buf1[1024];
429     int res = pDoc->MyKLink1.GetInfo(1, 0, 0, 16, buf1);
430     SysLog(pDoc->MyKLink1.m_resultStr);
431     CString s1;
432     s1.Format(_T("GetInfo = %d "), res);
433     if (res == KLink::KL_OK)
434     {
435         s1.Append(_T("\r\n"));
436         for (int i = 0; i < 16 / 2; i++)
437         {
438             s1.AppendFormat(_T("%04X "), buf1[i]);
439         }
440     }
441     SysLog(s1);
442     
443     s1.Format(_T("%04X"), buf1[0]);
444     SetDlgItemText(IDC_EDIT_DEVICE_TYPE, s1);
445     s1.Format(_T("%04X"), buf1[1]);
446     SetDlgItemText(IDC_EDIT_FIRM_VER, s1);
447     s1.Format(_T("%04X"), buf1[2]);
448     SetDlgItemText(IDC_EDIT_KLINK_VER, s1);
449     s1.Format(_T("%04X"), buf1[3]);
450     SetDlgItemText(IDC_EDIT_CAP, s1);
451
452     CString s2;
453     CString s3;
454     unsigned char buf2[1024];
455     res = pDoc->MyKLink1.GetUID(1, 0, 0, 12, (unsigned short *)buf2);
456     SysLog(pDoc->MyKLink1.m_resultStr);
457     s1.Format(_T("GetUID = %d "), res);
458     
459     if (res == KLink::KL_OK)
460     {
461         s1.Append(_T("\r\n"));
462         for (int i = 0; i < 12; i++)
463         {
464             s1.AppendFormat(_T("%02X "), buf2[i]);
465             s2.AppendFormat(_T("%02X"), buf2[12-i-1]);
466         //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
467         }
468     }
469     SysLog(s1);
470     SetDlgItemText(IDC_EDIT_DEVICE_UID, s2);
471
472     
473     res = pDoc->MyKLink1.GetSN(1, 0, 0, 4, (unsigned short *)buf2);
474     SysLog(pDoc->MyKLink1.m_resultStr);
475     s1.Format(_T("GetSN = %d "), res);
476     s2.Empty();
477     if (res == KLink::KL_OK)
478     {
479         s1.Append(_T("\r\n"));
480         for (int i = 0; i < 4; i++)
481         {
482             s1.AppendFormat(_T("%02X "), buf2[i]);
483             s2.AppendFormat(_T("%02X"), buf2[4-i-1]);
484             //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
485         }
486     }
487     SysLog(s1);
488     SetDlgItemText(IDC_EDIT_ORG_FACT_SN, s2);
489
490     res = pDoc->MyKLink1.GetFactoryData(1, 0, 0, 80, (unsigned short *)buf2);
491     SysLog(pDoc->MyKLink1.m_resultStr);
492     s1.Format(_T("GetFactoryData = %d "), res);
493     s2.Empty();
494     if (res == KLink::KL_OK)
495     {
496         s1.Append(_T("\r\n"));
497         for (int i = 0; i < 80; i++)
498         {
499             s1.AppendFormat(_T("%02X "), buf2[i]);
500             s2.AppendFormat(_T("%02X"), buf2[4 - i - 1]);
501             //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
502         }
503     }
504     SysLog(s1);
505 //    SetDlgItemText(IDC_EDIT_ORG_FACT_SN, s2);
506
507 //    unsigned char buf3[1024];
508     CTime ctime1;
509     for (int i = 0; i < nFactoryDataItemsCount; i++)
510     {
511 //        int nType = FactoryDataItems[i].nType;
512 //        int nSize = FactoryDataItems[i].nSize;
513 //        int nOffset = FactoryDataItems[i].nOffset;
514         CString sName = FactoryDataItems[i].sName;
515         s3 = GetDataStrByName(buf2,sName);
516         s1.Format(_T("%d %s %s"), i, sName, s3);
517         SysLog(s1);
518     }
519
520     s3=GetDataStrByName(buf2, _T("nLotNo"));
521     SetDlgItemText(IDC_EDIT_ORG_LOT_NO, s3);
522
523     s3 = GetDataStrByName(buf2, _T("nProductDate"));
524     SetDlgItemText(IDC_EDIT_ORG_FAC_DATE, s3);
525
526
527     return 0;
528 }
529
530
531
532 int CDialogFactCfg::WriteData()
533 {
534     // TODO: 在此处添加实现代码.
535
536     CString s1;
537     CMTerm2Doc* pDoc = (CMTerm2Doc *)GetDocument();
538     unsigned short buf1[1024];
539 //    unsigned char buf2[1024];
540 //    unsigned char buf3[1024];
541 /*
542     AddDataItem(0, 2, typeBIN, _T("开始标志"));
543     AddDataItem(2, 2, typeINT, _T("序号"));
544     AddDataItem(4, 2, typeBIN, _T("ModelNo"));
545     AddDataItem(6, 2, typeBIN, _T("ModelVer"));
546     AddDataItem(8, 4, typeUINT, _T("nLotNo"));
547     AddDataItem(12, 4, typeDATETIME, _T("nProductDate"));
548     AddDataItem(16, 4, typeBIN, _T("nSN1"));
549     AddDataItem(20, 4, typeBIN, _T("nProtocalVer"));
550     AddDataItem(24, 4, typeBIN, _T("nDefaultFuncr"));
551     AddDataItem(28, 16, typeString, _T("sModelStr"));
552     AddDataItem(44, 16, typeString, _T("sLot_No"));
553     AddDataItem(60, 16, typeString, _T("sSNStr"));
554     AddDataItem(76, 2, typeBIN, _T("CRC1"));
555     AddDataItem(78, 2, typeBIN, _T("EndSign"));
556 */
557     UINT uValue;
558
559     SetDataByName(buf1, _T("开始标志"), 0x55AA);
560     SetDataByName(buf1, _T("序号"), 0x0002);
561     SetDataByName(buf1, _T("ModelNo"), 0x0008);
562     SetDataByName(buf1, _T("ModelVer"), 0x0100);
563     GetDlgItemText(IDC_EDIT_LOT_NO, s1);    uValue = _tstoi(s1);
564     SetDataByName(buf1, _T("nLotNo"), uValue);
565     SetDataByName(buf1, _T("nProductDate"), 0x2996c000);
566
567     GetDlgItemText(IDC_EDIT_FACT_SN, s1);      uValue = _tstoi(s1);
568     SetDataByName(buf1, _T("nSN1"), uValue);
569     SetDataByName(buf1, _T("nProtocalVer"), 0x01000100);
570     SetDataByName(buf1, _T("nDefaultFuncr"), 0x00000001);
571     SetDataByName(buf1, _T("sModelStr"), _T("12122121"));
572     SetDataByName(buf1, _T("sLot_No"), _T("34344343"));
573     SetDataByName(buf1, _T("sSNStr"), _T("56566565"));
574     SetDataByName(buf1, _T("CRC1"), 0xEFEF);
575     SetDataByName(buf1, _T("EndSign"), 0x55AA);
576
577
578     int res = pDoc->MyKLink1.WriteFactoryData(1, 0, 0, 80, buf1);
579     SysLog(pDoc->MyKLink1.m_resultStr);
580     s1.Format(_T("WriteFactoryData = %d "), res);
581
582     return 0;
583 }
584
585 void CDialogFactCfg::OnBnClickedButtonReaddata()
586 {
587     // TODO: 在此添加控件通知处理程序代码
588     ReadData();
589 }
590
591 void CDialogFactCfg::OnBnClickedButtonConn()
592 {
593     // TODO: 在此添加控件通知处理程序代码
594     Connect();
595
596 }
597
598
599 void CDialogFactCfg::OnBnClickedButtonDisconn()
600 {
601     // TODO: 在此添加控件通知处理程序代码
602     Disconnect();
603
604 }
605
606
607
608
609 void CDialogFactCfg::OnBnClickedButtonWritedata()
610 {
611     // TODO: 在此添加控件通知处理程序代码
612     WriteData();
613
614 }
615
e00d5a 616 CString saveInputStr=_T(""), saveInput1Str= _T("");
YC 617 CString sDisplayStr;
618 CString sStoreStr;
619 bool bEditEndFlg = false;
620
621 int CDialogFactCfg::CharKeyClick(CString sKey)
622 {
623     // TODO: 在此处添加实现代码.
624     if (bEditEndFlg)
625     {
626         sDisplayStr.Empty();
627         bEditEndFlg = false;
628     }
629     sDisplayStr.Append(sKey);
630     int len1 = sDisplayStr.GetLength();
631     if (len1 > 1 && sDisplayStr[0] == _T('0')) sDisplayStr = sDisplayStr.Right(sDisplayStr.GetLength() - 1);
632
633     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
634     return 0;
635 }
636 void CDialogFactCfg::OnBnClickedBtn1()
637 {
638     CharKeyClick(_T("1"));
639 }
640 void CDialogFactCfg::OnBnClickedBtn3()
641 {
642     CharKeyClick(_T("3"));
643 }
644 void CDialogFactCfg::OnBnClickedBtn4()
645 {
646     CharKeyClick(_T("4"));
647 }
648 void CDialogFactCfg::OnBnClickedBtn5() 
649 {
650     CharKeyClick(_T("5"));
651 }
652 void CDialogFactCfg::OnBnClickedBtnClear()
653 {
654     sDisplayStr.Empty();
655     bEditEndFlg = false;
656     SetDlgItemText(IDC_EDIT_VIEW, _T("0"));
657 }
658 void CDialogFactCfg::OnBnClickedBtnAdd() 
659 {
660     bEditEndFlg = true;
661     sStoreStr = sDisplayStr;
662
663     //saveInput1Str = saveInputStr;
664     //saveInputStr = "";
665 }
666 void CDialogFactCfg::OnBnClickedBtnBackSpace()
667 {
668     int len1 = sDisplayStr.GetLength();
669     if (len1 > 1)
670     {
671         sDisplayStr = sDisplayStr.Left(sDisplayStr.GetLength() - 1);
672     }
673     else if (len1 == 1)
674     {
675         sDisplayStr = "0";
676     }
677 //    bEditEndFlg = false;
678     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
679 }
680
681
682
683 void CDialogFactCfg::OnBnClickedButton0()
684 {
685     // TODO: 在此添加控件通知处理程序代码
686     CharKeyClick(_T("0"));
687 }
688
689
690 void CDialogFactCfg::OnBnClickedButton1Dot()
691 {
692     // TODO: 在此添加控件通知处理程序代码
693     CharKeyClick(_T("."));
694 }
695
696
697 void CDialogFactCfg::OnBnClickedButtonEq()
698 {
699     // TODO: 在此添加控件通知处理程序代码
700     bEditEndFlg = true;
701
702     float a = _tstof(sStoreStr);
703     float b = _tstof(sDisplayStr);
704
705     float c = a + b;
706
707     sDisplayStr.Format(_T("%g"),c);
708     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
709
710 }