入力した全角文字列が逆になってしまいます。 – プログラミング – Home

入力した全角文字列が逆になってしまいま...
 
通知
すべてクリア

[解決済] 入力した全角文字列が逆になってしまいます。


tk
 tk
(@tk)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

エディットボックスの内容変更時に文字列の加工処理を行うと
入力カーソルが先頭に戻るようで、文字列が逆になる場合があります。
例:「さる」→「るさ」
この場合の対処法、調査方法等を教えてください。お願いします。


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 24年前
投稿: 895
 

>文字列の加工処理を行うと
どんなことしているのですか

参考に環境はどうなってるの
MFCは?


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

追加発言の所にある

発言される前に「使用上の注意」を必ずお読み下さい。

を見ていますか?

提供できる情報は全て提示しましょう。
読んでいる人は貴方しか知らない状況を知る術はありません。
ましてや、質問して回答を得ようと言うのに
回答してくれる人に自分の状況を今の内容だけで把握する努力を強いるのは
マナーに反すると思いますよ。
質問する側が自分の状況をわかってもらおうと努力する姿勢を見せないと
回答する側は引いてしまいます。


返信引用
ん
 ん
(@ん)
ゲスト
結合: 24年前
投稿: 81
 

> エディットボックスの内容変更時に文字列の加工処理を行うと
> 入力カーソルが先頭に戻るようで、文字列が逆になる場合があります。

それは「文字列が逆」になるように「文字列の加工処理」行っているのでは?

> この場合の対処法、調査方法等を教えてください。お願いします。

対処法:文字列が逆にならないようにする。
調査方法:デバッグ

※決して茶化しているわけではありません。デバッグしてるかも疑問に思ったんで。


返信引用
tk
 tk
(@tk)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

情報が足りなかったようですね。申し訳ないです。
OnEditchangeCombo1(コンボに入力で内容変化)にて、以下のように入力文字列数を制限し、
制限数以上の文字列を入力すると先頭からの入力となり、文字列逆転が発生です。
結構、簡単に発生するケースだと思ったので、情報を省略してしまいました。すみません。

CComboBox* lpEdt1 = (CComboBox*)GetDlgItem(IDC_COMBO1);
dw = lpEdt1->GetEditSel();
lpEdt1->GetWindowText(cRetStr);
if (cRetStr != seng.Left(4)){
lpEdt1->SetWindowText(seng.Left(4));
dw -= seng.GetLength() - 4;
}
lpEdt1->SetEditSel(dw,dw);

ちなみに以下の①②③の処理追加によるカーソル操作にて、解決できました。
CComboBox* lpEdt1 = (CComboBox*)GetDlgItem(IDC_COMBO1);
//① dw = lpEdt1->GetEditSel();
lpEdt1->GetWindowText(cRetStr);
if (cRetStr != seng.Left(4)){
lpEdt1->SetWindowText(seng.Left(4));
//② dw -= seng.GetLength() - 4;
}
//③ lpEdt1->SetEditSel(dw,dw);

いろいろと助言、どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました