2011-06-23 54 views
0

你們大多數人都經歷過,開發一個控制檯應用程序是一樣簡單:移植控制檯基於UI到GUI?

void mainloop(){ 
    while (1){ 
     giveInstructions(); 
     getInput(); 
     if (!process()) break; 
     printOutput(); 
    } 
} 

int main(){ 
    mainloop(); 
    return 0; 
} 

然而,在GUI就成爲一個問題。

我們仍然可以giveInstructions()process()printOutput(),但getInput()是行不通的,因爲它依賴於一個事件,通常是按一下按鈕或按下按鍵。

如何以最少的代碼更改將控制檯應用程序移植到gui應用程序? (最好不要改變main方法,並儘可能少地改變mainloop函數)

注意:我不太舒服的線程呢。

+0

這個問題並沒有寫出很多意義。如果您想使用控制檯應用程序,請使用控制檯應用程序。 –

+0

您可能使用控制檯應用程序進行原型製作,但您的真實應用程序是GUI應用程序,但您不一定要重寫'getInput',因爲它可能很長很醜。 – Pwnna

+0

在你心中,什麼是控制檯應用程序和GUI應用程序之間的分界線? –

回答

1

由於沒有提供特定的語言,我將在C#中展示一個示例,您將可以使用與簡單GUI一樣的控制檯應用程序使用相同的代碼。

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      //using form-editor, double-click buttons or use the following 
      btnInput.Click += new EventHandler(btnInput_Click); 
      btnContinue.Click += new EventHandler(btnContinue_Click); 
      giveInstructions(); 
     } 

     private void giveInstructions() 
     { 
      txtInfo.Text = ""; 
      txtInput.Text = ""; 
      //display instructions to multi-line textbox 
     } 

     private void btnInput_Click(object sender, EventArgs e) 
     { 
      //or you can just add another button for exit. 
      if (txtInput.Text == "expected value for exit") 
      { 
       Application.Exit(); 
      } 
      else 
      { 
       getInput(); 
      } 
     } 

     private void getInput() 
     { 
      string strInput = txtInput.Text; 
      //do stuff 

      printOutput(); 
     } 

     private void printOutput() 
     { 
      //display output to multi-line textbox 
     } 

     private void btnContinue_Click(object sender, EventArgs e) 
     { 
      giveInstructions(); 
     } 
    }