電子書籍の厳選無料作品が豊富!

.NET VC++で簡単な印刷プログラムを作りました
hdc = CreateDC(TEXT("EPMJ3"), TEXT("Canon MP280 series Printer"), NULL, NULL);・・・(1)
StartDoc(hdc, &docinfo);                           ・・・(2)
StartPage(hdc);
TextOut (hdc, 10, 200,L"テスト印刷の1行目です。", 12);           ・・・(3)
TextOutW(hdc, 10, 100,L"テスト印刷の2行目です。", 12);           ・・・(4) 
EndPage(hdc);
EndDoc(hdc);
DeleteDC(hdc);
プロジェクトの文字コードはUNICODEを指定しております

(1)はCreateDocW関数 (2)はStartDocW関数が呼ばれます
(3)は当然TextOutW関数になるだろうと思っていたら、TextOutA関数が呼ばれいます

試しに(4)のように直接TextOutW関数を指定してみたら、これも結果に於いてTextOutA関数が呼ばれています
   【以上の事柄はAPIフックを仕掛けて調べました】

なぜ私のコンパイラはUNICODE用のTextOut関数を呼出してくれないのですか????

A 回答 (1件)

OSはなんなのでしょう?



TextOutW()をコールしたら、文字コードをANSIに変換してTextOutAをコールする。
という実装になっている可能性もあります。
# コンパイラの問題ではなくTextOutWの中でそういう処理をしている可能性がある。
APIフックは使ったことはありませんが、コールスタックとか確認出来ませんか?

文字コード変換すると問題が出る文字でTextOutW()をコールしてみる。
とかで確認……できますかね?
    • good
    • 0
この回答へのお礼

ありがとうございました

参考になりました

お礼日時:2012/07/10 19:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!