程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 當年只會C# 所以寫C++就成這樣了!,

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

編輯:C#入門知識

當年只會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 once
10 #endif // _MSC_VER > 1000
11 
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                ///讀超時 milliseconds
16 
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;                //接受線程ID
42     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++的程序猿們一些思路。

 


當時簽證的時說只去法國,拿到了居然是半年的,類型是C,多次入境的,那比如我以後可以去其它國家

可以的,只要簽證有效期內任何簽證覆蓋的國家都可以去
你確認下是不是確實半年有效,多次入境,如果是就可以的
 

我今年20歲高中畢業,沒其他生存技可以,就只會開車有一本C照〔駕照〕社會各界朋友幫忙指點迷津

想要有出路 就是還要學習 現在一月3000塊或許夠用 未必五年之後還夠用 找一家好一點的學校,學點東西吧 做不了白領 去做個藍領啊 我有一朋友學建築的 就一中專學歷 上學時候就是一個小混混 畢業證最後還是找人買出來的 畢業後在建築工地干了兩年 自己考上了成人高考 現在工資兩千七八,做任何事情不要和人去攀比只要你把自己的事做的最好就行了 我朋友就是那樣 剛去工地時候他的打扮讓人看了挺不舒服的 張牙舞爪的 時間長了他也明白了 開始好好工作了 好好學習了 就像變了一個人 好好學習把 不管什麼專業 首先你要用心去學 將來都會有用
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved