• ベストアンサー

「 & 」が「 _」になってしまう

VC++初心者です。現在、VC++6.0 MFC SDK で帳票印刷用PGMを開発しています。 「Service & Building」という文字を印刷したいのですが、印刷結果が「Service _Building」 になってしまいます。何か対処方法をご存知の方がいらしたら教えていただきたいのですが・・・。 ちなみにロジックは以下のように作成しました。 pDC->SelectObject(oldcpen); newcpen.DeleteObject(); pDC->SelectObject(oldcbrush); newcbrush.DeleteObject(); pDC->SelectObject(oldcfont); newcfont.DeleteObject(); tmprect.left = 46 * p_x - ofset_x; tmprect.top = 28 * p_y - ofset_y; tmprect.right = 172 * p_x - ofset_x; tmprect.bottom = 35 * p_y - ofset_y; pDC->SetTextColor((long)-2147483640); s ="Service & Building"; newcfont.CreateFont(-18 * moji / 72,0,0,0,800,0,0,0, 1, 0, 0, 2, 0,"MS 明朝"); pDC->SelectObject(&newcfont); pDC->DrawText(s , -1 ,tmprect, 32);

質問者が選んだベストアンサー

  • ベストアンサー
  • --neiro--
  • ベストアンサー率15% (22/139)
回答No.3

プリフィックスが働いている為に&が"_"に変換されるんですね。 一番簡単なのはNo1さんの仰るとおり"&"を"&&"に変換することですが、もう一歩踏み出すつもりなら参考ページを張っておきますね。 「プリフィックス文字」で検索すると見つかりますよ。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win19.html
madamadahiyoko
質問者

お礼

お礼が遅くなってしまい、申し訳ありませんでした。 「プリフィックス文字」というのは初めて聞きました。 参考URLまで教えていただき、大変助かりました。すごくいい勉強になりました。 丁寧な回答をありがとうございました。

その他の回答 (2)

  • sateto36
  • ベストアンサー率50% (1/2)
回答No.2

>「Service & Building」をテキストデータから読込んで変数エリアにセットしてから印刷 >する場合はどうしたらいいのでしょうか?  実際にやってみましたか? s ="Service && Building"; とすると sには"Service & Building"と格納されます。 "Service & Building"を変数に正しくセットできれば、何もする必要はありません。 ですから上記の問題は、特に何もしなくてよいです。

madamadahiyoko
質問者

お礼

御礼が遅くなって申し訳ありません。 実際にやってみたのですが「_ 」となってしまいます・・・。 なので「&」を「&&」に変更したところ、問題が解決しました。 丁寧に回答していただき有難うございました。

回答No.1

s ="Service && Building";

madamadahiyoko
質問者

お礼

お礼が遅くなってもうしわけありません。 一文字ずつループさせて「&」があった場合には「&&」とするロジックを追加することにしました。 回答していただき大変助かりました。本当にありがとうございました。

madamadahiyoko
質問者

補足

早速の回答ありがとうございます。補足というか、追加になるのかも知れませんが、 「Service & Building」をテキストデータから読込んで変数エリアにセットしてから印刷 する場合はどうしたらいいのでしょうか? テキストデータから変数エリアにセットする時に一文字ずつ呼んで「&」があった場合は 「&」を付け加えるようにするしか方法はないのでしょうか? しつこく質問してすいません。

関連するQ&A