MFC中調(diào)試過程中查看輸出信息(轉(zhuǎn)載)(2012-11-21 13:55:26)筆記&&方便查閱。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 一般來說,有3種方法: 1) 調(diào)用TRACE(LPCTSTR lpszFormat, ...)函數(shù) ======================================================================================================== 1.在MFC中加入TRACE語句 2.在TOOLS->MFC TRACER中選擇 “ENABLE TRACING”點擊OK 3.進(jìn)行調(diào)試運(yùn)行,GO(F5)(特別注意:不是執(zhí)行‘!’以前之所以不能看到TRACE內(nèi)容,是因為不是調(diào)試執(zhí)行,而是‘!’了,切記,切記) 4.然后就會在OUTPUT中的DEBUG窗口中看到TRACE內(nèi)容了,調(diào)試執(zhí)行會自動從BUILD窗口跳到DEBUG窗口,在那里就看到TRACE的內(nèi)容了,^_^ 以下是找的TRACE的詳細(xì)介紹: 使用非常簡單,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同樣還存在TRACE0,TRACE1,TRACE2。。。分別對應(yīng)0,1,2。。個參數(shù) TRACE信息輸出到VC IDE環(huán)境的輸出窗口(該窗口是你編譯項目出錯提示的哪個窗口),但僅限于你在VC中運(yùn)行你的DEBUG版本的程序。 TRACE信息還可以使用DEBUGVIEW來捕獲到。這種情況下,你不能在VC的IDE環(huán)境中運(yùn)行你的程序,而將BUILD好的DEBUG版本的程序單獨運(yùn)行,這個時候可以在DEBUGVIEW的窗口看到DEBUGVIE格式的輸出了。 VC中TRACE的用法有以下四種: 1: TRACE TRACE 3: TRACE 4: TRACE 可以帶三個參數(shù)輸出,類似C的printf("...%d,%d,%d",變量1,變量2,變量3); TRACE 宏有點象我們以前在C語言中用的Printf函數(shù),使程序在運(yùn)行過程中輸出一些調(diào)試信息,使我們能了解程序的一些狀態(tài)。但有一點不同的是:
int x = 1; 要注意的是TRACE宏只對Debug 版本的工程產(chǎn)生作用,在Release 版本的工程中,TRACE宏將被忽略。 來自:http://blog.csdn.net/jiang1013nan/article/details/4166017 ======================================================================================================== 2)使用AfxMessageBox( )函數(shù)來輸出信息 ================================================================================================================== 以下簡述MessageBox與AfxMessageBox之間的區(qū)別。 1、AfxMessageBox()函數(shù)在任何類里邊都可以使用,而MessageBox()函數(shù)只能在CWnd類的繼承類中使用。 2、AfxMessageBox()函數(shù)的參數(shù)沒有MessageBox()函數(shù)的參數(shù)豐富,所以后者較前者靈活。 3、AfxMessageBox不能控制消息框標(biāo)題,常用于調(diào)試程序時的內(nèi)部數(shù)據(jù)輸出或警告;MessageBox比較正式,常用在要提交的應(yīng)用程序版本中,可以控制標(biāo)題內(nèi)容而不必采用含義不明的可執(zhí)行文件名為標(biāo)題。 int iRes = MessageBox("你看見消息框了嗎?","測試",MB_YESNO|MB_ICONWARNING); if( iRes == IDYES ) MessageBox("看見了!"); AfxMessageBox的用法
字符串的類型是 解決辦法1: 解決辦法2:選擇“項目”菜單->項目屬性->配置屬性->常規(guī)->字符集,改為“未設(shè)置”即可。 我覺得我們還是盡量使用方法1來解決這個問題! 也就說字符串前面加上_T LPCTSTR類型: L表示long指針 這是為了兼容Windows 3.1等16位操作系統(tǒng)遺留下來的,在win32中以及其他的32位操作系統(tǒng)中, long指針和near指針及far修飾符都是為了兼容的作用。沒有實際意義。 P表示這是一個指針 C表示是一個常量 T表示在Win32環(huán)境中, 有一個_T宏 STR表示這個變量是一個字符串 這個宏用來表示你的字符是否使用UNICODE, 如果你的程序定義了UNICODE或者其他相關(guān)的宏,那么這個字符或者字符串將被作為UNICODE字符串,否則就是標(biāo)準(zhǔn)的ANSI字符串。 所以LPCTSTR就表示一個指向常固定地址的可以根據(jù)一些宏定義改變語義的字符串。 LPCTSTR == const TCHAR * CString 和 LPCTSTR 可以說通用。 原因在于CString定義的自動類型轉(zhuǎn)換,沒什么奇特的,最簡單的C++操作符重載而已。 LPSTR lpstr = (LPSTR)(LPCTSTR)string; char buf[20]; AfxMessageBox(CString(buf),0,0); ======================================================================================================== 3)將標(biāo)準(zhǔn)輸出定向到自己創(chuàng)建的控制臺 |
|