2012-01-28 17 views
2

私はCで簡単なフォームを作成し、いくつかのコントロールを追加しました。しかし、エディットコントロールでは、リストボックスコントロールのようにテキストを追加することはできません。私が行うことができるのは、編集コントロールからテキストを取得し、必要な行を追加してテキストを再度設定することだけです。これは私がこの仕事をするために書いたコードです。編集コントロールにテキストを追加しますか? (Windows API)

void AddText(HWND EditControl, char *NewData) 
{ 
    int TextLen = GetWindowTextLength(EditControl); 
    char *Result = malloc(TextLen + strlen(NewData) + 1); 
    if (Result == NULL) return; 
    GetWindowText(EditControl, Result, TextLen + 1); 
    memcpy(&Result[TextLen], NewData, strlen(NewData)); 
    SetWindowText(EditControl, FinalText); 
    free(Result); 
    return; 
} 

編集コントロールにテキストを直接追加できますか?データを取得する必要がなければ、再度設定します。

+0

http://www.codeguru.com/forum/showthread.php?t=350435テキストの末尾に編集選択が記載されています – L7ColWinters

答えて

3

この方法では特に問題はありませんが、これは人間の時間に実行されます。だから、ユーザーが観察できるよりも速くするという点はほとんどありません。代わりに、EM_SETSELを使用して、既存のテキストの最後に選択項目を設定し、何も選択しないでEM_REPLACESELを使用してテキストを追加することができます。 WinformsのTextBoxBase.AppendText()が使うトリックです。

+0

MSDNで「EM_SETSEL」メッセージを確認しましたが、終わりまでの選択、0、-1を使用して最初にのみSendMessage()Params –

+0

WParam =選択の開始、TextLenに設定します。 LParam =選択の終わり、TextLenに設定します。あなたのShiftキーで何が間違っていますか? –

+0

okありがとう:D、ty –

関連する問題