• ベストアンサー

プリンタへ文字列の出力方法について

dannerの回答

  • ベストアンサー
  • danner
  • ベストアンサー率72% (8/11)
回答No.2

dannerです 印刷できませんかぁ rectにはちゃんと値を設定してますか? 多分していると思いますが...

rewind
質問者

お礼

お手数おかけして、すみません。 RECT構造体には、 rect.top = (GetDeviceCaps(pd.hDC, LOGPIXELSY)* (psd.rtMargin.top/1000))- GetDeviceCaps(pd.hDC, PHYSICALOFFSETY); rect.left = (GetDeviceCaps(pd.hDC, LOGPIXELSX)* (psd.rtMargin.left/1000))- GetDeviceCaps(pd.hDC, PHYSICALOFFSETX); rect.right = lpDevMode->dmPelsWidth - (GetDeviceCaps(pd.hDC, LOGPIXELSX)* (psd.rtMargin.right/1000))- GetDeviceCaps(pd.hDC, PHYSICALOFFSETX); rect.bottom = lpDevMode->dmPelsHeight - (GetDeviceCaps(pd.hDC, LOGPIXELSY)* (psd.rtMargin.bottom/1000))- GetDeviceCaps(pd.hDC, PHYSICALOFFSETY); としました。

rewind
質問者

補足

ちょっと気になったのですが、 文字列内の文字は、MS ゴシックで書いてあり、 出力する際、(方法1) PRINTDLG pd; TEXTMETRIC tm; GetTextMetrics(pd.hDC , &tm); として、TextOut()では、改行されないにしろ、出力動作は行います。 しかし、上記から(方法2) //GetTextMetrics(pd.hDC , &tm);をコメントアウトすると出力されません。 (方法3) PRINTDLG pd; TEXTMETRIC tm; GetTextMetrics(pd.hDC , &tm); DrawText(pd.hDC, tcBuf, lstrlen(tcBuf), &rect, DT_LEFT | DT_WORDBREAK); 現象として、 方法1:出力できるが改行されない。 方法2と方法3: 一瞬だけど、プリンタモニタが起動するが、 すぐ落ちる?    なにかしらフォントが関係しているのでしょうか?

関連するQ&A

  • 文字列の読み込みに関して

    C言語で、fgetsを使って文字列ファイルから読み込みを行うと、改行もしくは指定した文字列が来ると読み込みを、止めますが途中で改行が来ても読み飛ばして。(丸)までを読み込むようにするには、どのようなコードを書けばいいのですか? 別に使う関数は、これ以外でもいいのでコードを教えてもらえますか? お願いします。

  • 文字列を分解したいのですが・・・

    VC++初心者です。 ある文字列(数値、数値、数値CRLF数値、数値・・・)のような中からコンマで区切られた数字を取り出したいのですがうまくいきません。 とりあえずはコンマと改行コードの位置だけでも探したいのですがどうやったら良いでしょうか?お知恵を貸してください。 char buffer[64] = 10.52,5.88,4.37(改行コード)6.42,41.91; char* result; int ch1 = "CRLF"; result = strchr(buffer,ch1); int ch2 = "," result = strchr(buffer,ch2); 改行コードは最初の文字列に入ってるはずですが見えないので(改行コード)と入力しました。 よろしくお願いいたします。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!

  • 文字列を複数の段落に分割して出力

    次のようなことを実現したいのですが、どのようなアルゴリズムになりますか? ------ 文字列が複数ある。各文字列は改行コード(\n)で区切られた複数行の文字列からなる。 string[STR_NUM]; // STR_NUM: 文字列数 これらの文字列をN段落に分けて出力したい。 ただし文字列の途中行で段落を変えない。 各段落の行数は最適値を求める。つまり、各段落に最も均等になるように振り分ける。 N=2でSTR_NUM=4の場合は次のような感じで出力する。 文字列1文字列1      文字列3文字列3文字列3 文字列1文字列1文字列1  文字列3文字列3 文字列1文字列1      文字列3文字列3文字列3 文字列1          文字列3 文字列2          文字列3文字列3文字列3 文字列2文字列2文字列2  文字列4文字列4               文字列4文字列4               文字列4文字列4文字列4               文字列4 全体で15行あるので、均等に割ると1段落は8行となり、詰めて出力すると文字列3の2行目で改段落されることになります。そうならないように文字列3は2段落目の頭から出力します。 求めたいのは、Nとstring[0]~string[MAX_STR-1]が与えられたときの「1段落あたりの最大行数」と「各段落に出力する文字列」です。 各段落に出力する文字列は結合した状態で、かつ最大行数に合わせるように末尾に改行コードを必要数追加するものとします。 1段落あたりの行数の制限はありません。与えられた文字列によって最適な行数を求めます。

  • ダイアログへ文字列を表示させる方法(API)

    TCHAR s[80] = "Test"; MessageBox(NULL, s, "題名", MB_YESNO); としてダイアログを表示させるのと同じように、 ダイアログボックスをリソースエディタで作成し 作成したダイアログ内に、文字列を表示させるには どのようにしたら良いでしょうか? 作成したダイアログは、MessageBox関数で作成されるものと同じ。 表示させたい文字列は、MessageBox関数の第2パラメータのTCHAR型変数sと同じ。 ダイアログ内の表示させたい所の識別子は、IDC_STATIC。 MS VC++ & Win98 の環境で作成してます。

  • エクセルで重複する文字列を取り出し、取出した文字列をそれぞれ買うん等する方法?

    エクセルで重複する文字列を取り出し、取出した文字列をそれぞれ買うん等する方法? ---------------- あああ ---------------- いいいいい ---------------- ううううう --------------- あああ -------------- いいいいい -------------- とあった場合 あああが2つ、いいいいいが2つ、うううううが1つと数える関数またはサンプルコードを教えて下さい。

  • C言語で文字列の出力の問題

    1行目に文字列aを出力し、2行目にaの各文字を2回づつ出力し、3行目にaの格文字の文字コードを出力する関数 void print_string(char a[]) を作成せよ。 この関数を print_string("abcd") で呼び出したときの出力は abcd aabbccdd 97 98 99 100 となる。 という問題なのですが、2行目と3行目をどうしたら文字列aの文字や文字コードを個別に出力できるのかわかりません。 1行目までしかできてないですが、次のが私の作ったプログラムです。 #include <stdio.h> void print_string(char a[]) { printf("%s\n",a); } int main (void) { print_string("abcd"); return(0); } よろしくお願いします。

  • 文字列について

    昨日以下の質問をしました初心者ですが、 今自分で関数を作成しているのですが、文字列(丸数字)の文字化けにかなり苦しんでいます。 (※注※)これ以降(1)など()の中に数字を入れて記述しているものは実際のソースコード上では丸数字で記入してます。教えてgooでは丸数字が記述できないようでして… 関数の内容としては、(1)あ(2)い(3)う……このように丸数字で区切られている文字列を配列名を$dataとすると、$data[0]には「あ」、$data[1]には「い」、$data[2]には「う」が入るような関数を作成しています。 この丸数字の数は(10)まで対応させようと考えてます。 という質問をしましたが、この問題に関しては、 function bunkai($str1){ $data=explode('__SEPRATOR__',str_replace(Array("(1)","(2)","(3)","(4)","(5)","(6)","(7)","(8)","(9)","(10)"),'__SEPRATOR__',$str1)); array_shift($data); return $data; } と記述することのより解決しました。 しかし、昨日の質問を少し僕が間違えていたようで、実際には、$data[0]には「(1)あ」、$data[1]には「(2)い」、$data[2]には「(3)う」が入るような関数を作成したかったのです。で、試行錯誤しようにも方法が思いうかびませんでした。何か良い方法はないでしょうか?? ちなみに文字列は(1)あ(2)い(3)う……のように(1)から順番に始まるものもあれば(3)え(4)う…と(1)ではなく途中から始まるものもあります、なので、配列の順番を取ってきてそのまま丸数字に置き換えて挿入するという方法はダメです。 誰か文字列操作に詳しいお方、教えてもらえたらうれしいです。

    • ベストアンサー
    • PHP
  • リストボックスの文字列の取得

    VC++でダイアログのリストボックスに文字列を入れました。この文字列を別のエディタボックスに同じ内容を表示したいのですが、その方法がわかりません。誰か教えてください。お願いします

  • PHP コードを文字列として出力する方法

    お世話になります ダブルクォーテーションで囲っても 「PHP コード」を「文字列」として出力する方法 つまり、evalの逆の関数のようなものはありますでしょうか $a['huga'] = 2; $b['hoge'] = 3; //式 $c = $a['huga'] * $b['hoge'] ; abc($c = $a['huga'] * $b['hoge'] ); function abc($str){ //ここでなんちゃらほんちゃら //もしくはfunctionの外側でなんちゃらもでも可 echo $str; } 期待する出力結果 $c = $a['huga'] * $b['hoge'] ; 実際の結果 6 $の前に¥を入れてダブルクォーテーションで囲めば、 または、シングルクォーテーションの前に¥を入れてシングルクォーテーションで囲めば 文字列になるのはわかりますが 式の文字列には直接、手を加えず関数等で実現するやり方が知りたいです ※連想配列のキーの囲み文字はシングルクォーテーションです、ダブルに出来ない条件でお願いします。 お忙しい中恐縮ですが熟練者の方でわかる方がいましたら お教え下さいませ

    • ベストアンサー
    • PHP