2014-07-23 70 views
0

我已經通過鉑金在C++中創建了一個Windows應用程序。 當我運行這個應用程序,它會運行在命令提示符 現在,我想從Windows運行它,所以我管理它在Windows中運行 但問題是,我不能在命令提示符下運行應用程序和窗口同時。 它只允許我運行在Windows或命令提示符(不是兩個) 任何人都可以帶我到正確的路徑。Win32應用程序沒有在窗口中運行,但在控制檯中

+0

很難知道你在問什麼,但我懷疑你想有一個應用程序,它可以是控制檯或GUI取決於它的啓動方式。那麼,這是不可能的。信息在PE元數據中編碼。標準解決方案是兩個可執行文件。示例包括java.exe/javaw.exe,python.exe/pythonw.exe –

回答

0

如果你需要一個控制檯和一個窗口,你可以啓動應用程序作爲控制檯之一,然後創建一個窗口與Windows API

這裏舉例:

#include <iostream> 
#include <windows.h> 

long __stdcall WindowProcedure(HWND window, unsigned int msg, WPARAM wp, LPARAM lp) 
{ 
    switch(msg) 
    { 
    case WM_DESTROY: 
    std::cout << "\ndestroying window\n" ; 
    PostQuitMessage(0) ; 
    return 0L ; 
    case WM_LBUTTONDOWN: 
    std::cout << "\nmouse left button down at (" << LOWORD(lp) 
     << ',' << HIWORD(lp) << ")\n" ; 
    // fall thru 
    default: 
    std::cout << '.' ; 
    return DefWindowProc(window, msg, wp, lp) ; 
    } 
} 

int main() 
{ 
    std::cout << "hello world!\n" ; 
    const char* const myclass = "myclass" ; 
    WNDCLASSEX wndclass = { sizeof(WNDCLASSEX), CS_DBLCLKS, (WNDPROC)WindowProcedure, 
    0, 0, GetModuleHandle(0), LoadIcon(0,IDI_APPLICATION), 
    LoadCursor(0,IDC_ARROW), HBRUSH(COLOR_WINDOW+1), 
    0, (LPCWSTR)myclass, LoadIcon(0,IDI_APPLICATION) } ; 
    if(RegisterClassEx(&wndclass)) 
    { 
    HWND window = CreateWindowEx(0, (LPCWSTR)myclass, (LPCWSTR)"title", 
     WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 
     CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, GetModuleHandle(0), 0) ; 
    if(window) 
    { 
     ShowWindow(window, SW_SHOWDEFAULT) ; 
     MSG msg ; 
     while(GetMessage(&msg, 0, 0, 0)) DispatchMessage(&msg) ; 
    } 
    } 
} 

this link採取的行動(和從其他地方取)

+0

感謝您的快速輸入。 我試過了,按預期工作。 但我不認爲我可以通過這個API來設計。 你知道這件事嗎? –

相關問題