エディットボックスの選択範囲をクリップボードを介さずに取得する方法
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