2011-07-30 35 views
0

我正在用WxWidgets編寫應用程序,並遇到了多行文本控件(wxTextControl)的問題。它是聊天窗口中的輸入字段,如果用戶輸入需要打包的較長消息,則需要使用多行。我想要發送事件,例如按下發送按鈕時執行的操作,當用戶按下控件中的輸入時執行。我使用wxEVT_COMMAND_TEXT_ENTER事件工作,並啓用了wxTE_PROCESS_ENTER樣式。然而,問題在於,當發送命令執行時,一個新的行字符\ n也被附加到文本中(這發生在發送命令之後並且在我清除了文本之後,導致除了新的線)。我試圖通過捕獲char和key down事件來避免這種情況,但由於某些原因,他們並未開火。在WxWidgets文本控件中按Enter時防止換行

我只是想避免顯示新行。有沒有人有任何提示?

我在Windows上開發,但應用程序是爲了在WxWidgets支持的所有平臺上運行。

+0

你的問題可能是視窗specifc:http://blogs.msdn.com/b/oldnewthing/archive/2006/10/12/819674.aspx – pezcode

+0

只是爲了完整性起見,wxTE_PROCESS_ENTER和wxEVT_COMMAND_TEXT_ENTER不支持對於多行編輯框:http://wiki.wxwidgets.org/WxTextCtrl#wxTE_PROCESS_ENTER_and_Multiline_wxTextCtrls – pezcode

回答

0

您可能會跟蹤wxEVT_COMMAND_TEXT_UPDATED,並且在輸入換行符時(假定您在按Enter鍵時清除編輯器)清除編輯器。

BEGIN_EVENT_TABLE(Test,wxFrame) 
    EVT_TEXT_ENTER(EditorID, Test::OnEnter) 
    EVT_TEXT(EditorId, Test::OnText) 
END_EVENT_TABLE() 

void Test::OnEnter(wxCommandEvent&) 
{ 
    Send(editor->GetValue()); 
    editor->Clear(); 
} 

void Test::OnText(wxCommandEvent& event) 
{ 
    if (event.GetString() == wxT("\n")) { //seems to work, not much info in documentation? 
     editor->Clear(); 
    } 
} 
+0

感謝您的建議,我實際上最終在1小時前就意外地做了這件事)=。 –

相關問題