4
我有一個可以工作的C++ MFC程序,但我也希望能夠通過命令行調用更簡單的版本。 (如果有cmd行參數,這可以使用cmd行版本。)我希望程序使用當前打開的「cmd」窗口,並在某種程度上爲它創建一個新的shell。在InitInstance()中,我有...如何創建一個可以在GUI對話模式下或通過命令行啓動的C++ MFC程序?
CString cmdLine;
cmdLine.Format("%s", this->m_lpCmdLine);
if(cmdLine.IsEmpty())
dlg.DoModal(); // Run application normally
else
{
CString header = "Welcome to the program!";
AttachConsole(ATTACH_PARENT_PROCESS); // Use current console window
LPDWORD charsWritten = 0;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), header, header.GetLength(), NULL, NULL);
}
如何獲取輸入到我的程序中? cin似乎不工作。我試過這樣的:
char input[10] = "";
while((strcmp(input, "q") != 0) && (strcmp(input, "quit") != 0))
scanf("%s", input);
但它似乎不工作,因爲命令窗口等待新的提示。
*首先調用'AttachConsole(ATTACH_PARENT_PROCESS)',如果失敗則調用'AllocConsole'。只有在必要時(例如,從Explorer.EXE調用時),您才能獲得自己的控制檯。 – MSalters
不,這忽略了OP正試圖解決的問題,兩個程序試圖同時從控制檯讀取。 –
freopen(「CON」,「w」,stdout); freopen(「CON」,「r」,stdin); 最好的作品 – user1754508