VisualStudio2017 【C言語】文字色(14色)背景色(RGB3原色)で表示に成功!

5月連休も最終日。昨日までの天気はどこへ?、車も今にも止まりそうな勢いなので、どこにも行かず・・仕事?今は・・・プーさんです(笑)

なので、以前からしてみたかったC言語のお勉強してます!!

C言語に関しては、土素人で只今、学びの最中の備忘録ですので、失敗するとこが多いと思います。

プロの方から見ると何やってんだろう!!って感じですよね。なので先に誤っておきます。ごめんなさい<(_ _)>

さて、前回はアホなアクシデントがありましたが、やっと背景色と文字色の指定に成功しました!

DLL化も検討していたのですが、先に、ソースのみで表示されないことにはDLL化してもどうしようもないので、今回はマクロ機能を作って少しだけ文字の入力が少なくて済むようにしてみました。

参考にさせていただいたのはC++のダブルバッファで使用されている色コードでNobuhide Tsudaさんのサイトなのですが、この色コードを自分専用に書き換えて使用さてせ頂きました。

私が購入したC言語のプログラミングの本には記載がなかったもので、悪戦苦闘しましたが(笑)

変なことしてたら、怒ってください。

でも。私の(#^.^#)顔はひっぱたかないでね(^_-)-☆

 

使用しているOS:Windows7 64bit

開発環境:VisualStudioCommunity2017
Visual C++ 空のプロジェクト win32 x86で作っています。

 

 

VisualStudio2017【C言語】自作マクロで使えた色

こんな感じに無事背景色の色も表示されました!(^^)!

下のソースは、使えなかったのものですが・・

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー (アクティブ) E0007 認識されないトークンです 。

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C3872 ‘0x3000’: この文字を識別子で使用することはできません 。

とたくさん怒られてしまいました(>_<)

VisualStudio2017でエスケープシーケンスを使ってみる

もう一度基礎からC言語さんの

のペーシに下記のようなソースがあったので試してみたのですが・・・
 

VisualStudio2017で、配色などのエスケープシーケンスが使えなかった?・・・というより保存するにはUnicodeか違うエンコードで!!と言われてしまいました。

エスケープシーケンスで画面を表示しようとしたらこんな感じで・・・

使えないというよりUnicodeなんかで保存されたら、後々困りそうだから・・・やめときます。

 VisualStudioで使えたエスケープシーケンス

 

VisualStudioで使えるエスケープシーケンスは少しだけでした。

現在の全てのソースはこんな感じなんですが・・

 

これでは色が色々な所から呼ばれているようでもっとスマートに、でも後々のことを考えると色の配色が沢山欲しいと思い

SetConsoleTextAttributeで検索してみると・・・

SetConsoleTextAttribute

Microsoftのコンソール リファレンス

BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, // コンソールスクリーンバッファのハンドル WORD wAttributes // テキストと背景の色

があり 「ヘッダー:wincon.h 内で宣言」と書かれてあったので、「wincon.h」を見てみると

 

がありましたが、RBG色と同じ配色で少ない。

無理矢理#define に入れようとするとVisualStudioに怒られたこともあるので、思考を変え Nobuhide Tsudaさんの色コードを改良してもう少し入力文字数が少なくて済むようにしてみることにしました。

SET(COLOR,文字色|背景色);で色指定できるように変更

 

これなら、キーボードからの入力文字数が少なくて済みそうです。

でも、いざ試してみるとこんな感じ・・・

左上から背景が黒・右上がの背景は、ダークブルー

左下の背景はダークグリーン。右下の背景は白にしたのですが、綺麗に表示されたのは黒のみでした(T_T)

文字のみだと綺麗に表示されるのですが、背景を指定するのは、

背景色は、やっぱりRGB色を使うしかないみたいです。

下のコードも試したのですが・・・これもVisualStudioに怒られてしまいました^^;

 

結局、背景色は自作マクロでは呼び出さず、ソースに記途しました。

まぁ、こんなものですかね。

中央の画像は、BACKGROUND_INTENSITYを+したもので残りは、そのままの色です。

最終的に上の画像が実行できたソースは下のソースでした。

 
にほんブログ村 IT技術ブログへ