0

Visual Studiorcを使用してwin32cでプログラムを作成していますが、この一見単純なタスクを実行する方法がわかりません。静的テキストコントロール、編集コントロール、およびボタンがあります。ユーザーがボタンをクリックすると、プログラムが編集コントロールのテキストを取得して、静的テキストボックスにあるものに追加することはありません。多くの頭痛と様々な試みの後、私はまだこれを機能させることができません。編集コントロールからテキストを正常に取得できますが、静的コントロールにテキストを追加しようとするとクラッシュします。実際には、明確にするために、テキストを細かく設定できます。プログラムをクラッシュさせるのは、既存のテキストに追加するだけです。GetWindowText()とSetWindowText()(または必要に応じて他の何か)を使用してこれを実行できるようにするコードを誰かが投稿してください。これが私が持っているものです:

SendMessage(hwndEditControl, WM_GETTEXT,255,(LPARAM)editbuffer);
GetWindowText(hwndTextControl, (LPWSTR)allText, GetWindowTextLength(hwndTextControl));
//function to add data, please create on
SetWindowText(hwndTextControl, (LPCWSTR)allText);}
//where
static TCHAR*       editbuffer = new TCHAR; //feel free to change these declarations
static TCHAR*       allText    = new TCHAR;

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

1

文字列バッファ用に1文字しか予約していません。だから代わりに

static TCHAR*       editbuffer = new TCHAR;
static TCHAR*       allText    = new TCHAR;

より多くのメモリを予約する必要があります。例:

static TCHAR*       editbuffer = new TCHAR[255];
static TCHAR*       allText    = new TCHAR[255];

これにより、254文字と終了するヌル文字を保持できる文字列バッファが提供されます。

ただし、関数内のスタックにメモリを予約することをお勧めします。

void OnButtonClick()
{
    TCHAR editbuffer[255] = {0};
    TCHAR allText[255] = {0};
    ...
}
于 2012-07-29T10:48:33.537 に答える