C語言中的 fgets() 在 wxWidgets 如何對應

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

C語言中的 fgets() 在 wxWidgets 如何對應

Post by HeMason »

諸位前輩好:

小弟寫C程式寫慣了,以往用 fopen()、fgets() 一行行讀入資料檔分析的動作,不知道在 wxWidgets 中要如何模擬?我好像沒看到類似的函式。

另外,wxWidgets 所附的求助檔,很多函式參數的用法都沒說明。自己摸索半天也不知道他的用意。

請問哪裡有更詳盡的說明檔?
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
Satervalley
Knows some wx things
Knows some wx things
Posts: 47
Joined: Fri Dec 14, 2007 1:10 am

Post by Satervalley »

其实在C++中也可以使用C的标准库函数,所以你用这些函数也未尝不可。C的标准库函数在任何平台上差不多都有实现,所以几乎不影响移植性。
更好的办法是使用wxWidgets 提供的文件类了,不仅保持了移植性,而且是C++的用法。如 wxFile,wxFFile等,另外,wxwidgets 也提供了更“现代”的基于stream的文件类,wxFileStream,wxFileInputStream,wxFileOutputStream等,提供对类文件设备的统一抽象。
至于文档,就是那样子了,只有多尝试。其实我感觉慢慢熟悉了,就会基本上望类名、函数名而大概能知其意了。
murusu
Earned a small fee
Earned a small fee
Posts: 13
Joined: Thu Mar 12, 2009 9:38 am

Post by murusu »

楼主可以先看看这本书<<cross platform gui programming with wxwidgets>>

然后再配合wxwidgets源代码中附带的sample程序就基本可以弄清楚wxwidgets各种功能是如何实现的

官方的帮助文档的确有时候看得让人很恼火,在上面查个半天还不如直接看源代码来的快=.=
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Post by samsam598 »

LZ和LS 都是前辈,俺是菜鸟,愚者一见:
http://sourceforge.net/projects/wxcode/

有个wxDemo_win_1.0,是Win32下已编译好的sample包。要说的是该项目wxDemoViewApp.exe运行后,所有的wxWidgets sample例程源码及EXE还有wx2.9版本的CHM帮助文档都可象看CHM书一样阅览。如果俺表达的不好的话,运行一下wxDemoViewApp.exe即知。

PS:Sample 里仅仅一个console program 示例源码就有4522行,俺是服气S啦~~
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

Post by HeMason »

哇!感激涕零!
沒想到真的有人理小弟的蠢問題。
看來小弟真是來對地方了

小弟先前花了一點時間將wxWidgets中提供的 sample都跑了一遍,確定知道自己的需求都能達到,所以才放心使用wxWidgets的。

但是其中的說明不多,只能將有興趣的 sample code印出來,一行行看,一行行註記。

初期就是先用,日後再慢慢求解了。

感謝前輩所提下載包,小弟會悉心研究。
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

Post by HeMason »

原先小弟以為,主要外皮用wxWidgets,原先程式裡面的內容還是照用。
但是後來發現不行,因為先版需要支援 Unicode,舊版的寫法都是標準的 C,沒辦法支援 Unicdoe 啊!
要是用 MSW 的 _tfopen()、_fgetts() 等等 function,好像也不相容於其他平台。
所以,乾脆全部改寫成 wxWidgets 建議的方式好了。

問題是,wxWidgets 並非是一對一的 function,所以摸索起來有點停滯不前。
程式進度真是龜爬啊!
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
sishui
Earned some good credits
Earned some good credits
Posts: 121
Joined: Mon Mar 10, 2008 6:13 am
Location: 中國

Post by sishui »

HeMason wrote:原先小弟以為,主要外皮用wxWidgets,原先程式裡面的內容還是照用。
但是後來發現不行,因為先版需要支援 Unicode,舊版的寫法都是標準的 C,沒辦法支援 Unicdoe 啊!
要是用 MSW 的 _tfopen()、_fgetts() 等等 function,好像也不相容於其他平台。
所以,乾脆全部改寫成 wxWidgets 建議的方式好了。

問題是,wxWidgets 並非是一對一的 function,所以摸索起來有點停滯不前。
程式進度真是龜爬啊!

前輩的意思是,你以前的程式不支持UNICODE,現在的需要支持UNICODE,是吧?
1.核心不變,外殼用UNICODE,中間自己實現UNICODE2ANSI/ANSI2UNICODE,不過這樣很不好,感覺不倫不類

2.可能你很多東西都要修改或者重寫,_tfopen(),_fgetts()等等function可以用wx的stream來代替,wx中如果沒有類似MSW-API功能的function,那麼你可以用條件宏來寫你程式,如:

#if defined ( __WXMSW__ ) || defined ( _WINDOWS) || defined ( WIN32 )
.....
#else
.....
work work!!!
Post Reply