MFC 使用控制台打印程序信息


在MFC編程中,代碼的調試一直不太直觀。搞一個 MessageBox 來打印信息查看程序是否執行或執行是否有誤,又或者是在程序中設斷點都有不太方便的地方,特別是在需要獲得多個信息的情況下更是不便。此外,MessageBox 在涉及到打印非 CString 格式的信息時還要用 CString 的 Format 函數進行格式轉換,又給調試帶來進一步的麻煩。綜上,在MFC程序的調試階段加入像WIN32控制台程序那樣的控制台來打印程序信息顯得直觀又方便易用。下面,是在MFC程序中添加控制台程序的方法:

    在對話框程序的初始化函數OnInitDialog()中(如果不是對話框程序,或者希望在子對話框中加入,只需將代碼添加到相應的入口位置即可)加入如下代碼:

::AllocConsole();//打開控件台資源
FILE *fp;
freopen_s(&fp,"CONOUT$", "w+t", stdout);//申請寫,這個是針對VS2013版本的代碼,在VS較為早期的版本比如VS2008中,可將freopen_s改為freopen,並將參數改為對應形式即可
        到此,程序在運行時就會打開一個控制台窗口等待輸入,只要在程序中加入 printf(",,,,,,")  則可在控制台中打印出信息。

    最后,要記得在程序關閉的地方調用如下函數關閉掉控制台程序,不然會導致程序無法正常關閉的悲劇。

本人是在對話框程序的 WM_CLOSE 消息響應函數中添加的:

FreeConsole();//釋放控制台資源
    

    當然,MFC本身也集成了相應的宏"TRACE"來實現這個功能。示例如下:


TRACE("x = %d and y = %x and z = %f\n", 1, 2, 3);
    優點就是可以直接打印信息,缺點則是打印出來的東西在"輸出窗口"中,感覺總沒有控制台那么好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM