簡體   English   中英

將 GUI 添加到 c++ win32 控制台

[英]Adding GUI to c++ win32 console

我有一個現有的 C++ win32 控制台應用程序。 此應用程序包含一個主程序,該主程序連續實時處理來自硬件的一些數據,並具有一個服務器組件(線程化)以 stream 將數據輸出到客戶端。

我在想是否可以為用戶創建一個 GUI,以便在運行此控制台程序之前輸入一些程序參數。 GUI 我打算只顯示控制台程序的狀態,例如。 運行時,在用戶單擊“開始”按鈕后不需要用戶交互。

如果可能的話有什么建議嗎? 謝謝!

當然,只需創建一個帶有window 消息循環的線程即可。 這可能需要一個單獨的線程來處理您所描述的內容,盡管可以設想其他方式,具體取決於您現有代碼的具體細節。

反過來也是如此:一個 GUI 應用程序也可以創建一個控制台和 output 到它。

快速而骯臟的方式 - 在您想要的任何工具包中創建 GUI(例如 Qt、Gtk、Windows API...)並使用標准系統(const char *) function。

Nmap 是一個很棒的話題,因為存在許多前端,因此您可能有興趣深入研究源代碼以了解它們是如何將前端制作成控制台應用程序的。

控制台應用程序通常使用文本文件進行配置,這樣它們就可以從批處理腳本中運行而無需用戶交互。 可以使用參數指定配置文件。

一旦你有了這個,就可以直接編寫一個 GUI 配置編輯器和啟動器。 監控程序可能最好做成通知區域圖標,當進程終止或控制台中出現某些內容時會報告 output。

我對 GUI 實現流程的方式(不幸的是,當我沒有考慮包含 GUI 的設計時)是使用 posix 線程流程,一個用於運行應用程序的代碼,一個用於 GUI,具有全局變量(hacky) 由父進程共享(父進程運行兩個子進程)以單向方式(以避免出現競爭條件),因此一個變量將為進程寫入,為 GUI 讀取,另一個將為過程,為GUI編寫。

我不得不重新編寫處理 coe 以使用忙等待(壞)來等待信息和 state 更改為在每個忙等待循環之間跳轉。 忙於等待 state 更改並沒有花太多時間來實施。

這並不是真正的最佳方式(這非常 hacky),並且應該從一開始就將 GUI 設計到代碼中,而不是稍后“添加”。 但這確實對我有用,而且 GUI 在最后一分鍾的表現出奇地好。

暫無
暫無

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

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