VC++6.0でUnicode文字の入力 – プログラミング – Home

VC++6.0でUnicode文字の入...
 
通知
すべてクリア

VC++6.0でUnicode文字の入力

固定ページ 1 / 2

たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

VC++6.0で作成したアプリケーションのエディットボックスに
Unicodeでしか表現できない文字を入力することは可能でしょうか。

やりたいことは、VC++6.0で作成したアプリケーションをVistaで
動作させて、そこで1文字が3,4バイトになるような文字を入力できるように考えています。
実際にエディットボックスに入力すると?になってしまいます。

XPでも、IMEのモードを一般から人名/地名に変更して、かもめ(鴎の左側のメが品のやつ)
を入力すると再現できました。

現象自体は、Shift_jisで表せない文字を入力して、表示できないからだと思いますが
これは回避可能でしょうか?

よろしくお願いします。


引用解決済
トピックタグ
keichan
 keichan
(@keichan)
ゲスト
結合: 18年前
投稿: 28
 

自信はありませんが、オーナードローでUnicode変換してから表示すれば
解決するかもしれません。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

プリプロセッサでUNICODEと_UNICODEを定義して再コンパイルすればよいのでは?
対応可能なようにコードが書かれていて,かつI/Oまわりも処理可能なことが前提です
が。


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

Shift_JisとUnicodeの文字を混ぜて表示する事は出来ませんから
YuOさんが言われているようにプリプロセッサで切り替えてしまうのが
一番手っ取り早いでしょうね。
但し、TCHARとか_T()を使わずにコーディングしている場合は
その辺周りを修正しないと駄目でしょうけれど。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

ご返信ありがとうございます。

mfc42ud.libを追加インストールしないといけないんですね。
ちょっとすぐ試せないですけど、おってご報告します。

ところで、TCHARとか使ってないです。大量にchar使ってます。やはり書き直さないとダ
メですよね。
CStringってUnicode、OKでしょうか。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

VSのCDがまだ手配できなくて(ライセンスはもちろんあります)
Unicodeのテストできてないのですが

TCHARを使用して、charをwchar_t(2バイト)に置き換えたとして
Vista等で入力可能になるUnicodeの3,4バイト文字は結局、使用できないのでしょうか。

>CStringってUnicode、OKでしょうか。
これ、自分で調べました。CStringは、内部でTCHARを使用しているからOKなんですね。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

実際にもっと簡単なサンプルをつくって試してみてはどうでしょうか?
今あるのを書き換えても結局使えなかったら無駄になる可能性もありますし。

> Unicodeの3,4バイト文字
UTF-16だとすると、3バイト文字なんてあるんですかね。
1コード2バイトなのでサロゲートペアでも2バイト×2コードで4バイト
にはなると思いますけど。

おそらく、サロゲートペアの場合wchar_t型の領域2個分をつかって1文字をあらわす
ように文字コードが格納されるんじゃないでしょうかね。
(Shift_JISコードで全角文字が2バイト使うのと同じ様に)


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

ありがとうございます。

>おそらく、サロゲートペアの場合wchar_t型の領域2個分をつかって1文字をあらわす
>ように文字コードが格納されるんじゃないでしょうかね。
あ、そういうことですか。

VSのCDが手配次第、サンプルを作って試してみます。


返信引用
aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
 

VC++6.0でUNICODEを扱うアプリ作ったことあります
フルソースあります
もしまだ未解決のときはおっしゃってください


返信引用
とーりすがり
 とーりすがり
(@とーりすがり)
ゲスト
結合: 18年前
投稿: 29
 

皆さん言われているように
プリプロセッサの_MBCSを消して_UNICODEとUNICODEを追加すれば可能ですよ
NT4用アプリだってVC5やVC6の時代に作られてたわけですし


返信引用
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 20年前
投稿: 122
 

とーりすがりさんの書き込みに補足です。

MSDN Libraryの「Unicode プログラミングの要約」
<< http://msdn.microsoft.com/library/ja/default.asp?
url=/library/ja/vccore/html/_core_unicode_programming_summary.asp>>
に記載されていますが、exeを作成する場合は、
エントリポイントしてwWinMainCRTStartupを追加する必要があります。

#最近ちょうどVC6.0でUnicodeプログラミングの作成をしているので。。。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

どうせなら、らららさんのトピックを載せておきましょう。
http://rararahp.cool.ne.jp/vc/vctips/unicode.htm


返信引用
ぬ
 ぬ
(@ぬ)
ゲスト
結合: 18年前
投稿: 39
 

どうにもたけさんが言ってるUnicodeはよく使われるUnicodeより拡張(本来?)の
もののように思うのですが、どうなんでしょうか。

http://msdn.microsoft.com/library/ja/vccore/html/
_core_support_for_unicode.asp
だと、基本2バイトで、サロゲート使用時に4バイトとの事です。
そして、2バイトの型なので結局3バイトにならず4バイトになってしまいます。

http://euc.jp/i18n/charcode.ja.html
でUCS(Unicode)の項を見てみると、やはり2か4バイトです。
UTFだと3バイトなどもあるようですが…。

色々呼び方、実装の正確性などバラつきが有るようです。

http://itpro.nikkeibp.co.jp/article/NEWS/20060516/238066/
そして、Vistaで実装されるのはこちらではないでしょうか。
この記事世読む分にはUnicodeのバージョンアップのようですが、どうなんでしょう
か。


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

UTF-16なのかUTF-8なのかで話は変わってきますね。
この辺はWEBじょうで調べれば、ごろごろ出てくると思います。

この辺はUnicodeと一口に言っても幾つか種類がありますので
きちんと調べた方が良いと思いますよ。
今までのWindows環境では基本的にUnicodeと言えば、
UTF-16を指していましたので、これを使うのであれば、
WCHARで取り扱う必要があります。
TCHARは_UNICODEの定義の有無でcharとWCHARを自動で切り替えて
くれる便利な物なのでUnicode対応を考えるのであれば、
最初からTCHARを使うようにしておいたほうが楽が出来ます。
文字列のリテラルも_T(あああ)と言うのようにしておくと
同様の効果を期待できます。
基本的にVC++6.0で期待できるUnicode処理はUTF-16ですので
_UNICODEで対応できる範囲であれば、UTF-16と言う事なのでは
ないでしょうか?

あと、Vistaのフォントの問題とUnicodeの話は別物ですので
一緒くたにしない方が良いと思います。
Vistaのフォントの問題はJIS2004への対応により、
特定のコードの文字の形が変わってしまっている事に起因して
いるのであって、Unicodeが云々と言う話ではないはずです。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

試せてないうちに、みなさんコメントありがとうございます。

>どうせなら、らららさんのトピックを載せておきましょう。
> http://rararahp.cool.ne.jp/vc/vctips/unicode.htm

やろうとしていたことは上記で、サンプルを作成したところ出来ました。
他にもstrcpyを_tcscpyに変更するなどやることは多そうですが大丈夫そうです。

ただ、サロゲートペアの文字についてはXP上では試せてないです。
(XP上では不可?)
Vista上でまた試してみます。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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