• ベストアンサー

char型の文字列をウィンドウに表示させる。

c言語のAPIを用いてプログラミングをしているものです。 char*型の文字列をウィンドウに表示させるにはどうしたらいいでしょうか。できれば、例を挙げて教えていただけないでしょうか。 よろしくお願いします。

noname#142813
noname#142813

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・ウインドウとはクライアント領域のことですか?  もしそうであればクライアント領域のデバイスコンテキストを取得してから  文字列を描画すればよいだけです。 ・下にサンプルを載せておきます。 サンプル: LPCTSTR lpString = TEXT("表示する文字列"); HDC hDC; if ( (hDC = GetDC(hWnd)) != NULL ){  TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) );  ReleaseDC( hDC ); } その他: ・WM_PAINT メッセージで描画する場合は  (1)BeginPaint()  (2)TextOut()  (3)EndPaint()  の3ステップで行います。  詳しくは次のリンクを参考にして下さい。  http://arcpit.co.jp/winapi/api_01/ap010310.htm→『WM_PAINT』 ・以上。下の『参考URL』もどうぞ。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win15.html
noname#142813
質問者

お礼

これは違いますね・・・・ 普通にchar型の文字列を表示させたいのです。 TEXTOUTのやり方は知っています。 わかりますか? ちなみにint型を表示させるやり方はわかりました。

その他の回答 (3)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

LPCTSTRはマルチバイト文字コードならchar*なので質問の回答としてはあっていると思います。 これが違うとなると質問の意味がわかりません。 ちなみにint型を表示させるやり方を書いてもらえると質問の意味がわかるかもしれません。 char* lpString = "表示する文字列"; HDC hDC; if ( (hDC = GetDC(hWnd)) != NULL ){  TextOut( hDC, X座標, Y座標, lpString, lstrlen(lpString) );  ReleaseDC( hDC ); } // UNICODEだとエラーになります

noname#142813
質問者

お礼

どうも回答ありがとうございます。 恐らく、回答者様のプログラム例が僕のやりたかった事だと思います。 int型の方は、wsprint関数を用いて表示させました。 char*型はどうやってやればいいのかわからず質問させていただきました。 回答者様の例を実際に試してみて、分からなかったらまた、質問させていただきます。どうもありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★質問の意味が…。 >普通にchar型の文字列を表示させたいのです。 >TEXTOUTのやり方は知っています。 >わかりますか?  ↑  char型ですか?  LPCTSTR はコンパイル・オプションでマルチバイト文字になっていれば普通のchar型と  同じ型になります。Unicode 文字になっているときにchar型の文字列を表示しない場合は  Unicode文字列に変換してから表示すれば良い。  あるいはマルチバイト専用の TextOutA() 関数で描画すればいいと思います。 >ちなみにint型を表示させるやり方はわかりました。  ↑  これはもっと分かりませんでした。 ・コンパイル・オプションはどのようにしていますか?  つまりは文字セットがマルチバイト文字か、Unicode 文字のどちら?  補足して下さい。 ・以上。

  • ninigi
  • ベストアンサー率43% (10/23)
回答No.2

  > 普通にchar型の文字列を表示させたいのです。 > TEXTOUTのやり方は知っています。   察するに、 Visual C++がデフォルトでUNICODE環境なので、TextOutにchar*を渡せなくて困っている、 という事ですかね?   TextOut ではなくANSI文字列用の TextOutA を使えば解決する?  

関連するQ&A

  • char*型の文字列を表示させたい。

    char*型の文字列を表示させたい。 char*型の文字列をウィンドウに表示させるプログラムを作っているのですが、 調べても分からなかったので、質問させていただきます。 コンパイラはBorland C++で、プラットフォームはウィンドウズです。 Textoutのようにウィンドウに出力させたいのですが、うまくいきません。 うまく行かないと言うのは、C言語でのプログラムの書き方が分からないと言う事です。 ある文字列をファイルから読み込んで、ウィンドウに表示させると言うプログラムを作っています。 http://wisdom.sakura.ne.jp/system/winapi/win32/win15.html このような感じにしたいのですが…。宜しくお願い致します。 ちなみにこの質問をさせていただいたものです。 http://oshiete1.goo.ne.jp/qa3342727.html

  • char*型の文字列をchar[10]へ。

    char*型の文字列をchar[0]から順番に格納したいのですが、 どうやってやるかご存知の方おられますでしょうか。 申し訳ございません、宜しくお願い致します。

  • C言語で取得した文字列を、C++の文字列として取り扱いたいです。

    C言語で取得した文字列を、C++の文字列として取り扱いたいです。 皆さんこんにちは。 C言語で取得したchar型で定義された文字列を、 C++の「std::string」に渡したいと思っております。 どうすればかなうでしょうか? 具体的には次のような内容です。 ■C言語側 ---- char key1 = "deperture"; ---- ■C++側で「key1 = key2」としたいです。 ---- std::string key2 = key1; ---- C言語側で記述されている「key1」の値(deperture)を、 C++ソース内の「key2」に渡したいと思っています。 こうゆう場合、どんな方法をとれば適切でしょうか。 C言語側でのchar型の文字列の値を、 C++側の「std::string」型として C++のソースへ渡す方法が分からないです。 アドバイスいただけるとありがたいです。 簡単な例を頂けると更に大変ありがたいです。 以上どうぞ宜しくお願い致します。

  • char型でビット列表示

    char型の変数にビット配列を代入しそれを文字として出力させたいのです。 どこが間違っているのか分かりませんが一応流れを書いたプログラムを載せておきます。 char binary = 0; int i; for(i=0;i<8;i++){ if(省略) binary = binary & 11111110; else binary = binary | 00000001; binary = binary << 1; } printf("実行結果 %c",binary); 実行結果 00110110 というように最下位ビットに0か1を代入し、左シフトをし、というのを繰り返しprintf("%c",binary)でビット列を表示させたいのですが、これを実行すると結果は文字化けしたようなものが表示されます。 charの配列を作ってビット列を表示させるやり方はわかるのですが、学校の課題みたいなもので配列を使ってはいけないみたいなのです。 教科書を読んでも分からないので困っています。 よろしくお願いします。

  • Windows APIでおかしな事になる。

    Windows APIでプログラミングをしています。 Windows APIでプログラミングをしています。 char*型の文字列を表示させようと、このように記述しました。 const char * y; y=f(); SelectObject(hdc , hFont); SetBkColor(hdc , RGB(255 , 255 , 255)); wsprintf( str, "名前は、%s", y ); TextOut(hdc , 300, 20, str, lstrlen(str)); すると、表示できたのはいいのですが、 タイトルバーをクリックしてウィンドウを広げたり、別のウィンドウを一番前に持ってきて、 その後、そのウィンドウを出したりすると、エラーが出て、強制終了になってしまします。 何か問題はありますか? ちなみに、strの宣言はこのようになっております。 static TCHAR str[64]; あとですが、 wsprintf( str, "名前は、%s", y ); この部分のyを&yに変えると、エラーは起こりませんが、 変な文字が表示されてしまいます。 ウィンドウを少し操作すると、その文字がまた変な文字に変わります。 何が原因でしょうか。

  • C言語で整数を文字列へ型変換

    C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。

  • 文字列を後ろから1文字ずつ表示する

    初歩的なプログラミングです。 C言語の勉強中で、タイトルの通りの プログラムを作りたいのですが、 何かヒントを頂けないでしょうか。 自分で書いてみて失敗したのは下記の 通りです。 char s[11]; int i=0; printf("文字列入力(10文字以内-->)"); gets(s); printf("s=%s",s); while(s[i]!='\0'){ i++; } while(i=0){ printf("%c\n",s[i-1]); i--; } 宜しくお願いします。

  • charポインタへの文字列による動的確保

    char *c=new char("abcd"); のようにして、cに"abcd"のポインタを代入しようとしたのですが、 error C2440: '初期化中' : 'const char [5]' から 'char' に変換できません。 と出てきてうまくいきません。 どの様にすれば、メモリ確保と同字に文字列で初期化できるのでしょうか?

  • char型について【初心者です】

    プログラミング初心者です。 char型について質問です。 一般的にchar型とは文字列の定義という風に教えてもらったことがあるのですが、言語やデータベースによってchar型の定義は違うものなのでしょうか? 例えば、javaでは   char a = 'あ' というように、文字が全角一文字しか定義できないのに対して、SQLでテーブルを定義するときでは「長さ:10」というように文字を一文字以上格納できるので、大変疑問です。(この考え方が間違っているのでしょうか?) SQLの「長さ」というのも具体的に何の長さなのか分かりません。 かなりの初心者と思われるでしょうが分かりやすい回答を頂きたく思います。 よろしくお願いします。

  • C(char *s1)の文字列をObjective-Cの文字列(NSS

    C(char *s1)の文字列をObjective-Cの文字列(NSString *s2)にするにはどうしたらよいのでしょうか? char s1[] = "abc"; NSString *s2 = [[NSString alloc] initWithUTF8String:s1];  // (A) NSLog(@"s2=[%s]", s2); 結果がabcかなと思っていましたが、読めない変な文字が表示されました。 (A)を NSString *s2 = [NSString stringWithFormat:@"%s", s1]; に変えても同じでした。 s1のC文字列は日本語を含まないアルファベットの文字列なのになぜ?と 困っています。 Objective-Cの初心者で申し訳ありません。

専門家に質問してみよう