2010-05-30 72 views
2

我想在C++ win32控制檯應用程序中構建一個簡單的窗體。 而不是使用cin並不斷提示用戶輸入詳細信息,我想顯示錶單標籤,然後使用tab鍵,允許用戶通過標籤。win32控制檯 - 表格示例!

這樣做的最簡單方法是什麼,而不必使用ncurses?

所有我需要的是COUT下面一下子:

Name: 
Username: 
Email: 

設置名稱旁邊光標的位置上,那麼每一個你打的標籤頁時,我gotoxy,並設置光標到下一個位置,然後將cin設置爲下一個變量 例如。 在啓動

gotoxy(nameX, nameY); 
cin >> name; 

按下Tab鍵/輸入

gotoxy(usernameX, usernameY); 
cin >> username; 

按下Tab鍵/輸入

gotoxy(emailX, emailY); 
cin >> email; 

這是甚至是可行的?

我嘗試while循環,GetAsyncKeyState和鍵盤事件,但cin在該循環中無法正常工作。

是否有超級簡單形式的任何很好的例子,或參考這樣做? 我知道如何設置ConsoleCursorPosition,但如何實現tab鍵的同時仍然能夠捕獲cin?

感謝

+2

爲什麼你不做GUI? – SLaks 2010-05-30 02:46:48

+0

這是一個需要成爲win32控制檯應用程序的Uni項目,他們希望看到cout,cin和一大堆iostream功能的用法。這就是爲什麼我沒有使用ncurses,因爲它需要控制屏幕,我將無法使用cout,cin等。 – Bach 2010-05-30 03:04:56

回答

3

什麼是做 這一點,而不必使用ncurses的最簡單的方法是什麼?

使用ncurses的(或等效庫)簡單的方式做到這一點,到目前爲止。

您似乎忘記了選項卡只是在按行讀取時的另一個字符(如在cin>>name;中)。要模擬ncurses,您的程序需要處理多種類型的擊鍵(退格,製表符,箭頭,字符,數字,甚至功能鍵等),做適當的操作,正確地維護屏幕狀態,以及光標的位置 - 全部從用戶讀取三個文本字段。

考慮花費幾個小時仔細閱讀source code,即使您不使用它,您可能會學到很多(這是一個嚴肅的建議,順便說一句)。

+0

感謝NVRam,至少現在我知道不要在不使用ncurses的情況下嘗試去嘗試。如果ncurses是解決方案,那麼我認爲Uni不希望我們使用它。所以回到狡猾的提示,以及用戶體驗。 Ncurses非常棒,在我研究TUI庫時我已經實現了。再次感謝您的回答。 – Bach 2010-05-30 04:14:16