2バイト文字の判別


雷丸  2002-11-21 14:16:44  No: 50687  IP: [192.*.*.*]

前回は質問に答えていただきありがとうございました。
今回もお世話になりたいと思います。

今回はリストビューのカラムが押されたら、
リストビューに表示されているものをソートをしようとしています。
しかし英半角と全角が混在しているので、
どうやってソートをやったらいいのか見当もつきません。
一応私自身MSDNやネット検索で調べたのですが、見つかりませんでした。

2バイト文字を判別する関数はあるのでしょうか?
もし無いとしたらどのように判別したらよろしいでしょうか?

どうぞご助言お願いいたします。

編集 削除
雷丸  2002-11-21 16:38:10  No: 50688  IP: [192.*.*.*]

失礼、環境を書き忘れてました。
Win2k, VC++6.0 MFCのダイアログベースで開発しております

編集 削除
YuO  2002-11-21 17:49:17  No: 50689  IP: [192.*.*.*]

ソートの基準は何ですか?
普通はstrcmpでそのまま比較してしまいますが。

編集 削除
JUN2  2002-11-21 17:54:11  No: 50690  IP: [192.*.*.*]

>2バイト文字を判別する関数

ソートはともかく全角チェックは
IsDBCSLeadByte()なんかどう?

編集 削除
雷丸  2002-11-22 09:27:47  No: 50691  IP: [192.*.*.*]

ご返答ありがとうございます。
> YuO様
ファイルやフォルダ名を昇順に並べようとしています。
エクスプローラのような並び方になれば…と考えています。
strcmpには全角文字が入っても大丈夫なのでしょうか?
試してみます。

> JUN2様
なるほど、こういうのがあったのですね。

これから御二方の返答を参考に実際に組んでみたいと思います。

編集 削除
YuO  2002-11-22 11:10:48  No: 50692  IP: [192.*.*.*]

エクスプローラって辞書順だからstrcmpではだめですね。
CompareString APIを使うといけるかと。

編集 削除
雷丸  2002-11-22 11:19:20  No: 50693  IP: [192.*.*.*]

ご返答ありがとうございます!
> YuO様
おぉ、これはけそうですね〜。
これを使ってがんばってみたいと思います。
どれくらいかかるかわかりませんが結果報告いたします

編集 削除
ひろ  2002-11-26 14:42:40  No: 50694  IP: [192.*.*.*]

CListViewのアイテムをソートするには
通常GetListCtrl()にてCListCtrlのポインタを取得し
SortItems関数によって行います。

http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_LVitemsort.html
ここにやり方が書いてありますので
参考にしてください。

編集 削除