在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