2012-10-24 99 views
1

我需要在應用程序啓動期間創建一個沒有控制檯窗口或(任何其他窗口)的exe應用程序。如何在使用Visual Studio 2010的Win32項目中隱藏控制檯窗口

我嘗試了下面這個:

  1. 使用Visual Studio 2010中,創建了一個Win32控制檯應用程序作爲一個空項目。
  2. 在項目中添加了一個頭文件「stdafx.h」
  3. 向該項目添加了一個cpp文件並添加了下面的代碼。
  4. 該項目設置是可視stduio默認。

    #include "stdafx.h" 
    #include <windows.h> 
    #include "TlHelp32.h" 
    #include <iostream> 
    #include <string> 
    int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) 
    { 
    
         return 0; 
    } 
    

上面的代碼編譯好。

但是,如果我將字符集更改爲「使用Unicode字符集」,我收到以下編譯錯誤。

錯誤C2731: 'WinMain函數':函數不能在Windows 7 64位計算機和Visual Studio構建平臺64上載

我建立的應用程序。

在此先感謝您的幫助。

回答

1

是的,當您使用UNICODE生效時,入口點會爲命令行參數採用Unicode字符串。因此,需要一個不同的聲明:

int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
         LPWSTR lpCmdLine, int nShowCmd) 

或者你可以用#include <tchar.h>所以它仍然可以正常工作,沒有多大意義,以它這些天:

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
         LPTSTR lpCmdLine, int nCmdShow) 
+0

它的工作,感謝您的幫助 – JChan

0

創建Windows服務,而不是控制檯應用程序。

0

在Visual Studio中,創建一個新的「EMPTY項目」。添加一個名爲「main.cpp」的新源文件。使用下面的模板(假設你想用Unicode編譯):

/************ 
    main.cpp 
************/ 

#define UNICODE 1 

#include <windows.h> 

int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
         LPWSTR lpCmdLine, int nShowCmd) 
{ 
    // Process Return Codes 
    const int SUCCESS=0, FAILURE=1; 


    return SUCCESS; 
} 
相關問題