次の方法で共有


CEdit::SetHandle

複数行のエディット コントロールで使用するローカル メモリにハンドルを設定するには、この関数を呼び出します。

void SetHandle(
   HLOCAL hBuffer 
);

パラメーター

  • hBuffer
    ローカル メモリへのハンドルが含まれます。このハンドルは LMEM_MOVEABLE のフラグを使用して LocalAlloc Windows の関数への前の呼び出しで作成されている必要があります。メモリは null で終わる文字列を含むと見なされます。これを満たしていない場合、割り当てられたメモリの最初のバイトは 0 に設定されている必要があります。

解説

エディット コントロールは、独自のバッファーを割り当てる代わりに現在表示されているテキストを格納するためにこのバッファーを使用します。

このメンバー関数は、複数行のエディット コントロールだけが処理されます。

アプリケーションの前に新しいメモリのハンドルを設定します、ハンドルを現在のメモリ バッファーに取得し、LocalFree Windows の関数を使用して、そのメモリを解放するに GetHandle のメンバー関数を使用する必要があります。

SetHandle は元に戻すバッファー ( CanUndo のメンバー関数は、0 を返します) および変更の内部フラグをクリアします ( GetModify のメンバー関数は、0 を返します)。コントロールのウィンドウは再描画されます。

DS_LOCALEDIT のスタイル フラグのセットを含むダイアログ ボックスを作成した場合にのみダイアログ ボックスの複数行のエディット コントロールでこのメンバー関数を使用できます。

[!メモ]

GetHandle は、Windows 95 /98 を使用しません。Windows 95 /98 の GetHandle を呼び出すと、nullを返します。GetHandle 以降は、Windows NT、バージョン 3.51 の下で説明されているように動作します。

詳細については、Windows SDKの EM_SETHANDLELocalAllocLocalFree を参照してください。

使用例

// The string to set in the edit control.
CString strString(_T("George Frideric"));

// Initialize the new local handle.
size_t cbSize = (strString.GetLength() + 1) * sizeof(TCHAR);
HLOCAL h = ::LocalAlloc(LHND, cbSize);
LPTSTR lpszText = (LPTSTR) ::LocalLock(h);
_tcsncpy_s(lpszText, cbSize / sizeof(TCHAR), strString, _TRUNCATE);
::LocalUnlock(h);

// Free the current text handle of the edit control.
::LocalFree(m_myEdit.GetHandle());

// Set the new text handle.
m_myEdit.SetHandle(h);

必要条件

ヘッダー: afxwin.h

参照

関連項目

CEdit クラス

階層図

CEdit::CanUndo

CEdit::GetHandle

CEdit::GetModify