2017-03-17 64 views
-1

我正在寫一個基於終端的菜單,調用一個函數在箭頭鍵的菜單中向上/向下移動。問題是我需要WINDOW才能被兩個函數看到(它們都不是stdscr)。我試圖通過在頭文件中聲明它沒有成功來創建一個extern窗口。任何建議如何我可以做到這一點?謝謝C ncurses WINDOW as extern

+0

投票關閉,因爲OP解決了打字錯誤的問題。 – KevinDTimm

回答

2

請拋出你可能有的任何代碼以及結果和你正在運行的東西。讀ncurses的文檔,似乎沒有在這裏是真正的複雜性超出常規extern聲明(注:不是ncurses的用戶或專家):

  • 您需要在共享頭的extern WINDOW *global_win;
  • 在某些源文件中,您只需要一個WINDOW *global_win = NULL;
  • 您需要在初始化例程中的某處運行global_win = newwin();
  • 在此之後,您應該能夠從任何包含共享標題的文件中調用wrefresh(global_win)等,只要適當的目標文件鏈接到(具有步驟#2的文件)。

您還可以反轉您的模型,並讓您的庫成爲可以在任何窗口上操作的函數,例如, draw_circle(WINDOW *win) - 這樣,您的主要方法就包含實用程序模塊中的標題並傳入當前工作窗口(其中可以有一個),而不是在全局共享窗口上運行的模塊集合。這樣,每個人都不需要看到extern,但是您必須通過WINDOW *

0

好的。我今天肯定已經在屏幕上主演太久了......大聲笑。使WINDOW extern的代碼太簡單了。只需添加WINDOW * win; (其中* win將是您窗口的名稱)在'include'下面的標題的某個地方,然後在任何函數的某個地方定義它。對不起,這麼愚蠢......