2010-12-23 40 views
0

我讀過關於這裏寫在後一年前 wx.TextCtrl.LoadFile()WxTextCtrl無法加載大型文本

現在我有一個Windows應用程序,將生成保存在3D陣列顏色頻率統計solutuon。以下是我的代碼的一部分,您將在下面的代碼中看到統計信息的打印取決於指定閾值的滑塊。

無效Project1Frm :: WxButton2Click(wxCommandEvent &事件) {

char stat[32] =""; 
int ***report = pGLCanvas->GetPixel(); 
float max = pGLCanvas->GetMaxval(); 
float dist = WxSlider5->GetValue(); 
WxRichTextCtrl1->Clear(); 
WxRichTextCtrl1->SetMaxLength(100); 
if(dist>0) 
{  
    WxRichTextCtrl1->AppendText(wxT("Statistics\nR\tG\tB\t\n")); 
    for(int m=0; m<256; m++){ 
     for(int n=0; n<256; n++){ 
       for(int o=0; o<256; o++){ 

         if((report[m][n][o]/max)>=(dist/100.0)) 
         { 
          sprintf(stat,"%d\t%d\t%d\t%3.6f%%\n",m,n,o,report[m][n][o]/max*100.0); 
          WxRichTextCtrl1->AppendText(wxT(stat)); 
         } 

        } 
       }  
     }  
} 
else if(dist==0) WxRichTextCtrl1->LoadFile("histodata.txt"); 

}

到目前爲止,我已經試過的解決方案是,當我打印所有統計我去拿它來自一個文本文件,而不是通過3D數組......我想問一下,分段的Python實現是否可以移植到C++,或者有更好的方法來處理這個問題。謝謝。

編輯: 我使用文本文件的另一個原因是,我觀察到,只要我做sprintf [行WxRichTextCtrl1-> AppendText(wxT(stat));被評論]電腦開始放緩。

-Ric

回答

0

聲明:我的答案是更多的解決方案的替代方案。

我不認爲有任何情況下,這個應用程序的用戶會發現有一個滾動的文本窗口包含約1600萬行數字的任何情況。滾動到列表中用戶可能需要輕鬆查看的特定位置是不可能的。這一切都假設你輸出的每一個數字對用戶來說都有一定的意義(因爲某種原因,你在屏幕上顯示它們)。爲用戶提供控件以查找特定的,固定的(合理的)這些數字範圍將是一個更好的解決方案,不僅可以提供更好的用戶體驗,還可以幫助解決您的問題。另一方面,如果您仍然堅持一個包含所有6400萬個數字的單一窗口,您似乎在這裏擁有非常嚴格的數據結構,這意味着您可以(也應該)利用虛擬網格控制(wxGrid),即使這樣的數據集非常龐大,也可以順利運行。用戶很可能會發現該控件更易於閱讀並找到他們正在查找的數據部分。

相關問題