2011-07-30 22 views
0

WxWidgetsでアプリケーションを作成していて、複数行のテキストコントロール(wxTextControl)で問題が発生しました。チャットウィンドウの入力フィールドです。ユーザーがラップする必要がある長いメッセージを入力する場合は、複数行にする必要があります。送信イベントが必要です(例:ユーザーがコントロールを入力したときに送信ボタンが押されたときに実行されるアクション。 wxTE_PROCESS_ENTERスタイルを有効にして、wxEVT_COMMAND_TEXT_ENTERイベントを使用して作業しています。しかし、問題は、sendコマンドが実行されても、改行文字\ nがテキストに追加されていることです(これはsendコマンドの後で、テキストをクリアした後に発生し、ライン)。私はcharとkey downの両方のイベントをトラップすることでこれを回避しようとしましたが、何らかの理由で彼らは発砲していません。WxWidgetsテキストコントロールでEnterキーを押したときの改行を防止する

私は単に新しい行が全く表示されないようにしたいと思っています。誰にもヒントはありますか?

私はWindowsで開発していますが、このアプリケーションはWxWidgetsでサポートされているすべてのプラットフォームで動作するようになっています。

+0

あなたの問題は、Windowsが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時間ほど前に偶然、その正確なことをやっていました。 –

関連する問題