エディットボックスの選択範囲をクリップボードを介さずに取得する方法
CStringの特定位置のデータを取得する方法
void CSocpapiView::OnQuickDump()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
int FirstPtr; // 先頭ポインタ
int LastPtr; // 終了ポインタ
char Buf[10]; // 選択文字バッファ
DWORD Ptr; // 選択範囲ポインタ
CString Buff; // 表示中のテキスト
char **buf2; // ワークアドレス
// エディットボックスの選択範囲を取得する
Ptr = E_Logging_ptr->GetSel( );
// 選択範囲の先頭を取得する
FirstPtr = LOWORD( Ptr );
// 選択範囲の最後を取得する
LastPtr = HIWORD( Ptr );
// 範囲指定されていない時
if( FirstPtr == LastPtr )
{
// リターンする
return;
}
// 表示中テキストの全範囲を取得する
E_Logging_ptr->GetWindowText(Buff);
// ワーク用のアドレスに変換する
buf2 = (char **)&Buff;
// 選択範囲のみ切り出す
memcpy( Buf, (*buf2)+FirstPtr, LastPtr-FirstPtr );
まずは、選択範囲の開始位置と終了位置を取得します。参考までにメモリ上はこんな感じでした。 &Buff = 0x00120000 0x00120000 の内容 0x00400000 0x00400000 の内容 エディットボックスの文字列 buf2 = 0x00120000 *buf2 = 0x00400000