国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

當年只會C# 所以寫C++就成這樣了!

2019-11-17 02:47:57
字體:
來源:轉載
供稿:網友

當年只會C# 所以寫C++就成這樣了!

這應該是4-5年前了。 當年之會c#敲敲代碼也不會C++但深信開發這東西只要思想有了。 只是語法問題。 對于C++這貌似只有大牛才能勝任的,而對于我來說是如此困難。 所以想想辦法搞了很多通用類來避免C++中很多生疏的語法。

放出部分代碼。如下圖。

我們先以第一個為例:

applicationHelper為例:

看到這兩個方法你想到什么了。 是的。 就是C#里的Application方法中的Doevent和startuppath方法。 由于C#中很多方法多需要自己手動的寫。 而自己的經驗積累的有限。 而且還局限于C#轉行C++所以就只能寫成這樣了。 所以我想所的就是我上面的很多的類都是一C#為基礎構造出來的避免再去了解過多的C++原理。何樂而不為!

在來看看里面的實現。

如有錯誤大家勿噴,本人對C++了解并不深。 但可以寫C++項目僅此而已。

通用串口類BCLSerialPort。 命名還是當年微軟的mvc哈哈哈。 現在想想真有點囧!

 1 // BCLSerialPort.h: interface for the BCLSerialPort class. 2 // 3 ////////////////////////////////////////////////////////////////////// 4  5 #if !defined(AFX_BCLSERIALPORT_H__86B3D83F_D22C_44F9_B138_40E3D480EDFB__INCLUDED_) 6 #define AFX_BCLSERIALPORT_H__86B3D83F_D22C_44F9_B138_40E3D480EDFB__INCLUDED_ 7  8 #if _MSC_VER > 1000 9 #PRagma once10 #endif // _MSC_VER > 100011 12 typedef BOOL (CALLBACK* ONREAD)(const char * buf, DWord dwBufLen, void* pContex);13 14 #define READ_BUFFER_SIZE        1024        ///讀取串口數據長度15 #define READ_TIME_OUT        500                ///讀超時 milliseconds16 17 #define SERIALPOINT_DEFAULT        0            ///串口初始狀態18 #define SERIALPOINT_OPENED        1            ///串口已打開19 #define SERIALPOINT_CLOSED        2            ///串口已關閉20 21 22 class BCLSerialPort  23 {24 public:25     ///構造函數 26     BCLSerialPort();27     28     ///參數   comNo        串口號29     ///參數   baudRate    波特率30     BCLSerialPort(CString comNo, DWORD baudRate);    31     32     ///參數   comNo        串口號33     ///參數   baudRate    波特率34     ///參數      parity    校驗位35     ///參數   byteBit    數據位36     ///參數      stopBit    停止位37     BCLSerialPort(CString comNo, DWORD baudRate, DWORD parity, BYTE byteBit, BYTE stopBit);    38     39     ///打開串口40     BOOL SerialPortOpen();    41     ///關閉串口42     void SerialPortClose();    43 44     ///寫串口45     DWORD SerialPortWrite(LPCTSTR sBuf, DWORD dwToWrite);    46     ///讀串口47     BOOL SerialPortRead(LPTSTR sBuf, DWORD& dwRead);        48 49     virtual ~BCLSerialPort();50     51 public:52     CString m_ComNo;            ///串口號53     DWORD m_BaudRate;            ///波特率54     BYTE m_ByteBit;                ///數據位55     BYTE m_StopBit;                ///停止位56     BYTE m_Parity;                ///奇偶校驗 (無校驗-NOPARITY)(奇校驗-ODDPARITY)(偶校驗-EVENPARITY)57 58     DWORD m_SendLength;            ///發送數據長度59 60     DWORD m_OpenState;            ///串口打開狀態61     HANDLE h_Com;                    ///串口句柄62     COMMTIMEOUTS m_CommTimeouts;    ///串口超時63 };64 65 #endif // !defined(AFX_BCLSERIALPORT_H__86B3D83F_D22C_44F9_B138_40E3D480EDFB__INCLUDED_)

通用Socket通訊類:

 1 #pragma once 2  3 #include <winsock2.h> 4 #include <windows.h>  5  6 #pragma comment(lib,"ws2_32.lib") 7  8 #define WIN32_LEAN_AND_MEAN 9 #define MAX_RECIVE_SIZE (256*1024)10 11 //定義連接斷開事件12 typedef void (CALLBACK* ONCLOSE)(void* pOwner);13 //定義當有數據接收事件14 typedef void (CALLBACK* ONTCPREAD)(void* pOwner, void* tsOwner, const char * buf, DWORD dwBufLen);15 //定義Socket錯誤事件16 typedef void (CALLBACK* ONTCPERROR)(void* pOwner,int nErrorCode);17 18 class BCLTcpSocket  19 {20 21 public:22     BCLTcpSocket();23     virtual ~BCLTcpSocket();24 25     BOOL    Connect();                                //連接服務器26     BOOL    Close(void);                            //關閉27     void    CloseReciveThread(void);                //關閉接收線程28 29     void    ReciveData(void);30     BOOL    Send(const char* data , int dwBufLen);    //發送數據31     void    RegisteCallBack(ONCLOSE fClose, ONTCPREAD fRead, ONTCPERROR fError);// 設置處理回調接口    32 private:33     HANDLE    m_ExitReciveThread;                //退出接收線程34     static    DWORD WINAPI Recive(LPVOID lparam);        //接收數據35 36 public:37     SOCKET            m_Socket;                        //Socket通訊句柄38     HANDLE            m_ReciveThread;                    //數據監聽線程39 40     DWORD            m_ConnectState;                    //連接狀態 -1未連接 0 連接成功 1 連接失敗41     DWORD            m_ReciveThreadId;                //接受線程ID42     char            m_ip[255];                        //ip地址43     int                m_Port;                            //端口號44     char            m_Data[MAX_RECIVE_SIZE];        //接受最大數據緩沖數據區    45     void*            m_pOwner;                        //主線程指針46 47     ONCLOSE            OnClose;                        // 連接斷開事件,回調函數    48     ONTCPREAD       OnRead;                            // 接收數據事件,回調函數    49     ONTCPERROR        OnError;                        // 發生錯誤事件,回調函數50 };

數據庫查詢類SearchCondition

 1 #pragma once 2 #include <stdarg.h> 3  4 ///數據庫條件 5 enum SqlOperator 6 { 7     Like = 0 ,          //模糊查詢 8     LikeAt,             //模糊查詢匹配前面字符 9     LikeLast,           //模糊查詢匹配后面字符10     NotLike,            //不等于模糊查詢匹配11     Equal,              //等于12     NotEqual,           //不等于13     MoreThan,           //大于、14     MoreThanOrEqual,    //大于等于15     LessThan,           //小于16     LessThanOrEqual,    //小于等于17     In                  //18 };19 20 class SearchCondition  21 {22 public:23     SearchCondition();24     virtual ~SearchCondition();25     26     ///獲得條件27     CString GetCondition();28     29     ///獲得條件符號30     CString GetSign(UINT operatorType);31     32     ///清空條件語句33     void NewSearchCondition();34     35     ///模糊查詢36     void SearchConditionLike(CString fied, CString value, CString likeStr);37 38     ///模糊頭查詢39     void SearchConditionLikeAt(CString fied, CString value, CString likeStr);40 41     ///模糊尾查詢42     void SearchConditionLikeLast(CString fied, CString value, CString sign, CString likeStr);43 44     ///模糊不包含查詢45     void SearchConditionNotLike(CString fied, CString value, CString sign, CString likeStr);46 47     ///降序排序48     void SearchConditionOrderByDesc(CString fied);49 50     ///升序排序51     void SearchConditionOrderByAsc(CString fied);52 53     ///operatorType 數據庫操作參數 fied 字段 value 值 sign 符號 likeStr 模糊查詢符號54     void SearchConditionAnd(CString fied, SqlOperator operatorType, CString value, CString sign);55     56     ///operatorType 數據庫操作參數 fied 字段 value 值 sign 符號 likeStr 模糊查詢符號57     void SearchConditionOr(CString fied, SqlOperator operatorType, CString value, CString sign);58 59 60 public:61     ///條件62     CString m_Condition;63     ///64     SqlOperator m_SqlOperator;65 };

通過以上寫C++ 工控項目應該就不愁了。 串口, 有Socket通訊。 讀寫數據庫。由于對C++不了解。 想用接口實現。后來才之后沒接口概念。 通過需方法來代替。 這也給我提供了不少便利。

總結:都說C#轉C++比較麻煩。在自己轉向C++的過程中并沒用出現太多的困難. 確實不是特別方便。 但是通過自己的逐步構造。 大多時候都將一些方法按照C#的命名方式轉換過來。 這樣寫C++的代碼跟寫C#的一樣。 感覺還是蠻爽的。

還望各路大神提供更牛X的方法!僅此提供給有需要c#轉型C++的程序猿們一些思路。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德令哈市| 合肥市| 天门市| 肇州县| 弋阳县| 利津县| 亚东县| 红安县| 务川| 托克托县| 玉林市| 峨山| 油尖旺区| 阿坝| 哈密市| 井研县| 翁牛特旗| 白河县| 宁乡县| 高唐县| 安泽县| 景洪市| 深圳市| 铁力市| 阳西县| 磴口县| 宜州市| 明星| 博罗县| 台南市| 香格里拉县| 吉林省| 万宁市| 隆昌县| 许昌市| 蒙城县| 集贤县| 裕民县| 高陵县| 珲春市| 满洲里市|