在C++中,控制檯應用程序可以有在其WINMAIN procedure.Like這樣的消息處理程序:如何創建不終止的控制檯應用程序?
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
#ifdef _DEBUG
CreateConsole("Title");
#endif
hwnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if(IsDialogMessage(hwnd, &msg))
continue;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}
這使得該方法不關閉,直到控制檯窗口已經接收WM_QUIT消息。我不知道如何在delphi中做類似的事情。
我的需求並非完全是一個消息處理程序,而是一個使控制檯應用程序像使用線程的GUI應用程序一樣工作的輕量級「技巧」。因此,例如,兩臺Indy TCP服務器可以在控制檯應用程序沒有終止進程的情況下進行處理。
我的問題:這怎麼能完成?
這是**不是**控制檯應用程序,它是沒有可見頂級窗口的標準GUI應用程序。否則,你不需要調用'CreateConsole()',一個控制檯應用程序總是有一個控制檯連接到它。或者你想讓空的控制檯窗口停留在應用程序運行時? – mghie 2010-04-07 11:05:13
我希望在應用程序運行時保留空的控制檯窗口,但我不希望它終止。我必須用兩個TCP服務器用一個控制檯替換一個gui應用程序,其操作方式與gui相同(不終止)與兩個tcp服務器。 – 2010-04-07 11:11:07
如果你真的在編寫一個TCP服務器,那麼它應該是一個**服務**,在這種情況下,console和gui是無關的,因爲它的用戶界面永遠不會被看到。 – 2010-04-07 16:08:20