簡體   English   中英

C ++:寫入打開表單的控制台

[英]C++ : Writing to a console which opened a form

我有一個打開窗口的控制台。 如何使用從表單上的控件獲取的值寫入此控制台? 例如文本字段?

要在Windows下訪問控制台,您必須將程序鏈接為控制台應用程序。 在Visual C ++中,可以在“項目設置”中的“配置屬性/鏈接器/系統/子系統=控制台”下進行配置。

將您的應用程序作為檢測控制台應用程序並不意味着你不能打開一個窗口。 這僅意味着a)您的進程將始終具有控制台窗口,並且b)例如cmd.exe將同步執行它(=等待其完成,然后繼續執行腳本/再次顯示提示)。

然后,您可以按常規方式訪問控制台:使用std::coutprintf等。

AFAIK如果將應用程序鏈接為窗口應用程序,則沒有(簡便)方法來訪問啟動該應用程序的控制台。 (但是,IIRC您可以分配一個新的控制台,但是我認為這不是您想要的)。

編輯:如果您要打印一些消息到控制台,即使輸出已被重定向,我建議您使用std::cerr打印到“錯誤輸出”。 默認情況下,“錯誤輸出”也將默認發送到控制台,但它與“ stdout”是不同的流,並且通常不會重定向。 可以重定向,但是我認為為用戶提供該選項是一件好事,而不是通過直接打印到控制台來解決任何重定向問題。

EDIT2:當我需要一個“雙模式”應用程序(即可以與GUI或在命令提示符下運行的應用程序)時,我使用控制台應用程序,如果GUI版本為,則調用FreeConsole()擺脫控制台窗口。通過命令行參數選擇(例如,不傳遞任何參數)。 如果以GUI模式啟動應用程序(例如,通過雙擊資源管理器),則仍會短暫彈出該控制台方式,但該應用程序會立即關閉,因此在使用GUI時不會使屏幕混亂。

Windows控制台應用程序默認情況下將stdout連接到控制台。 如果不是(例如,通過外殼重定向了I / O),則可以打開特殊文件名"CONOUT$"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM