摘要: 今天展示一下如何使用這里描寫的庫(kù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的聊天工具。Callback Interface是昨晚才加的,但是還有一些features沒實(shí)現(xiàn),等做完了再做一個(gè)Demo,然后提供源代碼。
使用這個(gè)東西可以開發(fā)一些C/S模式的程序,然后只需要將服務(wù)器和客戶端看成同一個(gè)程序,將客戶端認(rèn)為是很多個(gè)線程就行了。服務(wù)器端提供一些類給客戶端創(chuàng)建并使用,當(dāng)這些服務(wù)類要求回調(diào)的時(shí)候,客戶端只需要按照回調(diào)的接口實(shí)現(xiàn)回調(diào),然后將指針提供給服務(wù)類就行了。剩下來(lái)的鏈接啊調(diào)度啊網(wǎng)絡(luò)傳輸?shù)膯栴}就全部不用管了,非常方便。
閱讀全文
posted @
2009-07-17 18:20 陳梓瀚(vczh) 閱讀(3678) |
評(píng)論 (10) |
編輯 收藏
摘要: 這次展示如何將一個(gè)服務(wù)器端的C++類讓客戶端調(diào)用。使用早上剛剛開發(fā)完的工具,用戶可以不用處理任何傳輸過(guò)程中的連接和編碼解碼等操作。這次實(shí)現(xiàn)一個(gè)四則運(yùn)算的語(yǔ)法分析器,客戶端發(fā)送表達(dá)式,服務(wù)器端傳回語(yǔ)法樹(繼承樹那個(gè)模型),客戶端將語(yǔ)法樹傳回去,服務(wù)器端傳回運(yùn)算結(jié)果。
閱讀全文
posted @
2009-07-03 18:07 陳梓瀚(vczh) 閱讀(4154) |
評(píng)論 (14) |
編輯 收藏
摘要: 現(xiàn)在不僅可以閱讀類的成員,也可以用函數(shù)名的字符串去調(diào)用函數(shù)并取得結(jié)果了。代碼與這篇文章的實(shí)例類似,因此只貼出更改的部分以及程序截圖。
閱讀全文
posted @
2009-06-29 20:47 陳梓瀚(vczh) 閱讀(4794) |
評(píng)論 (0) |
編輯 收藏
摘要: 為了給C++的反射做Demo,不得不研究一下HTTP的協(xié)議。后來(lái)發(fā)現(xiàn)Windows自帶了API可以用,于是就寫了個(gè)小東西。程序打開之后,如果檢測(cè)到【http://localhost:8080/vczh/FILENAME】這樣子的請(qǐng)求,就將一個(gè)目錄下面的東西讀出來(lái),然后返回。于是就可以用IE來(lái)運(yùn)行某個(gè)地方的網(wǎng)頁(yè)了。代碼如下:
閱讀全文
posted @
2009-06-29 05:19 陳梓瀚(vczh) 閱讀(3906) |
評(píng)論 (4) |
編輯 收藏
摘要: 跟上一篇文章一樣,一樣的數(shù)據(jù)結(jié)構(gòu),但是添加了對(duì)數(shù)組、列表和映射的更多的支持。首先是代碼,然后是序列化后的XML文件。
閱讀全文
posted @
2009-06-28 20:12 陳梓瀚(vczh) 閱讀(6520) |
評(píng)論 (10) |
編輯 收藏
摘要: 所謂的反射當(dāng)然不是自動(dòng)化的,而是需要自己打標(biāo)記的。下面會(huì)展示兩份文件,告訴大家我這個(gè)做了一半的反射是怎么工作的。寫這個(gè)東西的主要目的是,將來(lái)可以實(shí)現(xiàn)序列化,譬如說(shuō)序列化到流,或者序列化到XML文件,或者做其他的事情等等(譬如說(shuō)使用類名創(chuàng)建對(duì)象并進(jìn)行修改)。
閱讀全文
posted @
2009-06-25 06:48 陳梓瀚(vczh) 閱讀(3591) |
評(píng)論 (4) |
編輯 收藏
摘要: 查了MSDN,發(fā)現(xiàn)Windows支持Drag and Drop的方法是四個(gè)COM:IEnumFORMATETC、IDataObject、IDropSource和IDropTarget。為了讓自己做的一個(gè)代碼編輯文本框里面的代碼可以被拖出去拖進(jìn)來(lái),無(wú)奈之下只好實(shí)現(xiàn)了這四個(gè)東西。
實(shí)現(xiàn)了之后,程序剛開始需要調(diào)用OldInitialize(NULL);,結(jié)束的時(shí)候調(diào)用OnUninitialize();,控件創(chuàng)建的時(shí)候調(diào)用RegisterDragDrop,控件結(jié)束的時(shí)候調(diào)用RevokeDragDrop。然后就可以通過(guò)這些COM來(lái)做Drag and Drop了。下面是接口的實(shí)現(xiàn):
閱讀全文
posted @
2009-05-29 21:17 陳梓瀚(vczh) 閱讀(3055) |
評(píng)論 (4) |
編輯 收藏
摘要: 說(shuō)明:CMinus是一個(gè)讀入修改過(guò)語(yǔ)法的C源程序,然后編譯成x86指令集寫入內(nèi)存,最后用__stdcall調(diào)用約定跟C++互相交流的腳本引擎。
目標(biāo):CMinus的定位是中間語(yǔ)言,用于將其他語(yǔ)言編譯到CMinus上,享受本地指令帶來(lái)的好處。
進(jìn)度:完成所有功能,但是由于指令集生成的算法不好,打算修改。
下載:【內(nèi)詳】。
閱讀全文
posted @
2009-05-22 00:32 陳梓瀚(vczh) 閱讀(9959) |
評(píng)論 (24) |
編輯 收藏
摘要: 雖然CMinus到中間指令的代碼是精心控制的,但是中間指令到x86的代碼卻是很隨意寫出來(lái)的。現(xiàn)在看來(lái)用窺孔優(yōu)化只是一種治標(biāo)不治本的方法。打算在CMinus整個(gè)都完成了之后,將中間指令到x86的代碼生成那部分重寫,使用一種廣為人知的寄存器分配算法來(lái)做。下面是冒泡排序的程序:
閱讀全文
posted @
2009-05-19 16:51 陳梓瀚(vczh) 閱讀(2996) |
評(píng)論 (3) |
編輯 收藏
摘要: 目前其實(shí)只能編譯單目運(yùn)算符和return語(yǔ)句,主要是為了看看整個(gè)大框架有沒有錯(cuò)誤。如果沒有發(fā)現(xiàn)錯(cuò)誤的話,其他種類的表達(dá)式和語(yǔ)句的代碼生成很容易加上去。下面是一個(gè)CMinus程序的例子和編譯結(jié)果(匯編):
閱讀全文
posted @
2009-05-17 23:00 陳梓瀚(vczh) 閱讀(2610) |
評(píng)論 (1) |
編輯 收藏