- ベストアンサー
「 & 」が「 _」になってしまう
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);
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
プリフィックスが働いている為に&が"_"に変換されるんですね。 一番簡単なのはNo1さんの仰るとおり"&"を"&&"に変換することですが、もう一歩踏み出すつもりなら参考ページを張っておきますね。 「プリフィックス文字」で検索すると見つかりますよ。
その他の回答 (2)
- sateto36
- ベストアンサー率50% (1/2)
>「Service & Building」をテキストデータから読込んで変数エリアにセットしてから印刷 >する場合はどうしたらいいのでしょうか? 実際にやってみましたか? s ="Service && Building"; とすると sには"Service & Building"と格納されます。 "Service & Building"を変数に正しくセットできれば、何もする必要はありません。 ですから上記の問題は、特に何もしなくてよいです。
お礼
御礼が遅くなって申し訳ありません。 実際にやってみたのですが「_ 」となってしまいます・・・。 なので「&」を「&&」に変更したところ、問題が解決しました。 丁寧に回答していただき有難うございました。
- Trick--x--
- ベストアンサー率26% (19/72)
s ="Service && Building";
お礼
お礼が遅くなってもうしわけありません。 一文字ずつループさせて「&」があった場合には「&&」とするロジックを追加することにしました。 回答していただき大変助かりました。本当にありがとうございました。
補足
早速の回答ありがとうございます。補足というか、追加になるのかも知れませんが、 「Service & Building」をテキストデータから読込んで変数エリアにセットしてから印刷 する場合はどうしたらいいのでしょうか? テキストデータから変数エリアにセットする時に一文字ずつ呼んで「&」があった場合は 「&」を付け加えるようにするしか方法はないのでしょうか? しつこく質問してすいません。
お礼
お礼が遅くなってしまい、申し訳ありませんでした。 「プリフィックス文字」というのは初めて聞きました。 参考URLまで教えていただき、大変助かりました。すごくいい勉強になりました。 丁寧な回答をありがとうございました。