项目build通过,然后start运行。在界面出现前,有个DOS窗口出现,窗口内的信息很快就过去了,看不到。如果DOS窗口的信息提示有错误,那得纠正。请问如何看到DOS窗口的信息或者干脆让DOS窗口不出现?3X。

解决方案 »

  1.   

    你搜索下AllocConsole这个函数
    看看那里创建了一个控制台
      

  2.   

    看看你的工程属性里,编译选项中要设置为windows不要设置为console或者不设置
      

  3.   

    //Hide console
    #pragma   comment(linker,  "/subsystem:\"windows\"   /entry:\"mainCRTStartup\"")
      

  4.   

    如果是DEBUG运行的话,可以看看输出窗口的信息,或者贴出来分析。
      

  5.   


    我用这句#pragma  comment(linker,  "/subsystem:\"windows\"  /entry:\"mainCRTStartup\"")出现如下提示:
    svcrtd.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
    1>Debug\root_growth3DGUI.exe : fatal error LNK1120: 1 unresolved externals
      

  6.   

    大概是调用了系统命令,然后就出现提示DOS窗口。
      

  7.   

    ?..你用设置下断点拉..看看DOS窗口是运行到那里出来的...在那里设置断点知道吧,,
      

  8.   

    出现DOS窗口,有好几种原因,一是因为你编写的就是控制台程序,也就是早期所谓的DOS程序,二是你编写的虽然是窗口程序,但你调用了控制台程序
    1.如果你编程时,编译选项是控制台,你在编译选项中找找,即Project->Settings->Link 在Project Options就会发现subsystem:console这两个单词,把它改为subsystem:windows.这是最方便安全的
        一般通过使用以下的四种组合可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,也可以达到在Windows程序中向控制台输出printf信息了。
        #pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
        #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
        #pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
        #pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
    2.一般在使用VC++时,如果你的入口为main等普通入口,那么一般为控制台;Windows程序正常时使用向导,不使用向导也可,但Win32程序入口一般为WinMain()
    3.如果你在程序中大量调用控制台下的程序,或者使用控制台的指令,也容易出现Dos窗口,即使用printf,或者cin,cout等。要改成Windows下的输出输入方法最后:从楼主使用的错误提示看,感觉其函数入口有问题了
      

  9.   

    DOS窗口的出现是因为调用了系统命令。这样可以隐藏DOS窗口:
    STARTUPINFO si;
    PROCESS_INFORMATION hi;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&hi, sizeof(hi));
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE; CString Str1 = "C:\\WINDOWS\\system32\\cmd.exe /c";
    CString Str =Str1 + "del " + ("\"" + CurPath  + "\"") + "\\output\\*.txt";
    LPTSTR   pSter = Str.GetBuffer();  
    CreateProcess(NULL, pSter, NULL, NULL, FALSE, 0, NULL, NULL, &si, &hi);   //delete the previous output files.
    Str.ReleaseBuffer();
      

  10.   

    用 createprocess隐藏DOS窗口:
    STARTUPINFO si;
    PROCESS_INFORMATION hi;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&hi, sizeof(hi));
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE; CString Str1 = "C:\\WINDOWS\\system32\\cmd.exe /c";
    CString Str =Str1 + "del " + ("\"" + CurPath  + "\"") + "\\output\\*.txt";
    LPTSTR   pSter = Str.GetBuffer();  
    CreateProcess(NULL, pSter, NULL, NULL, FALSE, 0, NULL, NULL, &si, &hi);   //delete the previous output files.
    Str.ReleaseBuffer();