win32程序启用控制台-- 调试输出
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                win32程序启用控制台-- 调试输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            win32程序啟用控制臺(控制臺文件名:conout$,conin$,conerr$)??
 
做win32窗口程序的時候,有時還是希望在控制臺下輸入輸出一些信息。
特別是VC的TRACE()宏雖然不錯,但是輸出在VC的debug窗口下。
里面有些雜亂的信息,看起來還是很不爽。
1。最原始的分配控制臺,獲得句柄,再輸出
??? AllocConsole() ;
??? HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE) ;
??? WriteConsole(hd , "hello hplonline" , sizeof("hello hplonline") , NULL , NULL );
??? CloseHandle(hd) ;
這個方法是我最早知道的,但畢竟不直觀。
每次都要調用一個WriteConsole才搞定。
自己寫個函數來包裝他的話,雖然做新的項目可以。
但是想要利用一些以前已經做好的控制臺下的東西就囧了。
如果有個方法能夠讓我們還是方便地使用printf這樣的函數就完美了。
 
2。對stdin,stdout,stderr重新打開
??? AllocConsole();
??? freopen("conout$","w",stdout) ;
??? printf("hello hplonline!-_-\n") ;
??? std::cout<<"i'm cout"<<std::endl;
??? freopen("conout$","w",stderr) ;
??? std::cerr<<"i'm cerr"<<std::endl;
 
這個用起來就很方便了,昨天在論壇上看到的。
另外就是三個特殊的文件名:
conout$,conin$,conerr$
我想他們的意思已經在他們的名字里的。結合上面的例子就很顯然的。
3。修改subsystem
這個方法我就沒試過了。
上學期做AISnake的時候就在想,選手調試起來很不方便。
但是不知道怎么把控制臺搞出來,只有建議大家用文件輸出。
后來看到xsjs的改造版,問之,說直接改subsystem。
不過他改的那個版本在我這里也是沒法輸出東西,不知道怎么回事。
誰去試一下,記得來說說這方法哈,
                        
                        
                        2010-07-23 13:55:40|??分類:?c++|字號?訂閱
一個尋找很久,卻得來全不費功夫的事情。做win32窗口程序的時候,有時還是希望在控制臺下輸入輸出一些信息。
特別是VC的TRACE()宏雖然不錯,但是輸出在VC的debug窗口下。
里面有些雜亂的信息,看起來還是很不爽。
1。最原始的分配控制臺,獲得句柄,再輸出
??? AllocConsole() ;
??? HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE) ;
??? WriteConsole(hd , "hello hplonline" , sizeof("hello hplonline") , NULL , NULL );
??? CloseHandle(hd) ;
這個方法是我最早知道的,但畢竟不直觀。
每次都要調用一個WriteConsole才搞定。
自己寫個函數來包裝他的話,雖然做新的項目可以。
但是想要利用一些以前已經做好的控制臺下的東西就囧了。
如果有個方法能夠讓我們還是方便地使用printf這樣的函數就完美了。
2。對stdin,stdout,stderr重新打開
??? AllocConsole();
??? freopen("conout$","w",stdout) ;
??? printf("hello hplonline!-_-\n") ;
??? std::cout<<"i'm cout"<<std::endl;
??? freopen("conout$","w",stderr) ;
??? std::cerr<<"i'm cerr"<<std::endl;
這個用起來就很方便了,昨天在論壇上看到的。
另外就是三個特殊的文件名:
conout$,conin$,conerr$
我想他們的意思已經在他們的名字里的。結合上面的例子就很顯然的。
3。修改subsystem
這個方法我就沒試過了。
上學期做AISnake的時候就在想,選手調試起來很不方便。
但是不知道怎么把控制臺搞出來,只有建議大家用文件輸出。
后來看到xsjs的改造版,問之,說直接改subsystem。
不過他改的那個版本在我這里也是沒法輸出東西,不知道怎么回事。
誰去試一下,記得來說說這方法哈,
總結
以上是生活随笔為你收集整理的win32程序启用控制台-- 调试输出的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: android同步aar到jcenter
- 下一篇: docker mysql5.7 主从_d
