VisualStudio【C言語】メニュー画面作成中のメモです【マイツール】との違いは?

前回引き続き、今回はメニュー画面を作っています。

最近、色作りに専念しちゃっててやっと本題ですか?って感じですよね。

 

まぁ、超初心者のページなんて誰もみない!!と勝手に仮定させてもらって、

超メモ書きになっているのですが・・

こんなふうにしたらいいよ!!なんてアドバイスいただけるとものすごーく嬉しいので(#^.^#)念のため・・・

 

 

私が作りたいのはこんなの↓↓

なんですけど・・・

以前作ってたのはここまでで・・

 

でも、今回は少しだけ進みました。

 

マイツールの記述方法とは違いがあり、まず画面表示に座標が指定ができそうになかったことです。

以下のソースはマイツールで記述したものなんですが、

使えたのは、今のところCLS とIFくらいです。(記述方法は違いますが・・・)

RUNという命令は、次のプログラムを実行する命令なんですが、C言語ではまだ見つけていません。

 

 

 

C言語ではgoto関数は使わない方がいい?

 

マイツールでよく使っていた飛び先を指定する方法「GOTO」なんですが、まず、下のように記述してみました。

 

すると1C言語では、「goto」を指定すると思うように飛先に行ってくれず・・

困ったあげくに検索すると、やはりgoto関数は戻ってこれないとか色々なことが書かれていて素人は使わない方がいいようなことが沢山書かれていました。

そこで、気を取り直し、

goto関数を使うのはやめて、以下のように入力変更・・・

 

すると・・始めの画面表示はよかったのですが

メインメニュー表示中に 1⏎ すると・・・

上の画像のように画面表示されました。

解決方法としては、マイツールの時に使っていたCLS命令

それに匹敵するのが【system(cls)】でした。

system(cls)で現在の画面をクリアにする

system() 関数はシステムにコマンド実行を要求する関数で

cls=画面クリアコマンド

 

でも、次の画面を表示したいので、

 

を使って表示しました。

 

やっとコマンドプロント画面から 1⏎ で次のメニュー画面が表示されるようになりました。

 

今回少し手こずったのは、数字を入力しても指定の場所にいってくれなかったところでした。

解決方法としては変数キーボードから入力した値を格納する時に以下のように

文字として認識してもらえるようにシングルコーテーションを付加した結果素直に動いてもらえました。

get char関数を使う時の注意点!


get char関数は、コマンドプロンプト画面から入力された半角英数字を自動的文字として変数の型charに格納する関数。

少しだけ進んだかな?

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

VisualStudioCommunity2017【C言語】で16色の背景色と文字色をコンソール画面に出力に成功!

 

前回に引き続き背景色がどうしても諦められず・・・

色コードで色々試した結果、

下のような16色の背景色を出力するのに成功しました!

この色は0x0001 などのコードを入力して出力された色から逆にhtmlの色コードのcolor名に当てはめたものです。実際にこの色コードが存在するものかどうかは?です。

 

ソースの中のコメントに記述している【#000080】などのコード色はhtmlの色コードなのでC言語には関係ありませんが、色々コードを使って試している時にわからなくなりそうだったもので記述しました^^;

とりあえず、使いたい時にだけincludeできればいいので、

ヘッダファイルに保存することにしました。

念のため下のソースを試してみると・・・

 

 

無事動作確認!!

次回は、本題のメニュー画面作成に入りたいと思います。
にほんブログ村 IT技術ブログへ

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技術ブログへ

C言語で業務系のシステムを作ってみよう!メニュー画面の文字に色を付ける

前回に引き続き、文字に色を付けてみたいと思います。

前回できたのは、下の画面なんですが、これでは白と黒だけでDOS画面そのものの表示でつまらないので、今回はこれに色を付けたいと思います。

文字に色を付ける

VisualStudioでは、色のエスケープシーケンスはサポートされていないようで四苦八苦^^;

WindowsのDOSのみ有効な手段みたいなので、こちらのサイトを参考に追記させてもらいました。

 

まず、通常の色で試すと下の画像のようにシアンも赤も暗めでくっきりとならなかったので

FOREGROUND_INTENSITY“を使って強調したのは下のソースです。

すると、こんなにくっきりと文字が明るくなりました。

 

文字の色の作り方

 

RBGカラー光の三原色を混ぜて表示してみました。

 

 

 

SetScreenTextAtrribute関数を使うと背景色に色が付けられるとのことで調べてみた結果

コンソール プロセスを生成して標準ハンドルをリダイレクトする方法

Microsoftのサポートにありました。

HANDLE hStdInput = GetStdHandle(STD_INPUT_HANDLE);//子プロセスの標準入力ハンドル HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);//子プロセスの標準出力ハンドル HANDLE hStdError = GetStdHandle(STD_ERROR_HANDLE);//子プロセスの標準エラー ハンドル

 

注意:printf() や fprintf() などの C ランタイム関数を使用する子プロセスでは、リダイレクトを行うと処理速度が低下する場合があるそうです。

 

文字の背景色を設定する時の書き方

おそらくこれでいいはずなんだけど・・・

背景色がなかなか設定できない^^;

マイツールみたいにスマートに記途ができれば・・・

そう言えば、マイツールは沢山のDLLファイルがありそのDLL名がマイツール独自の関数(命令)でしようしていた関数名COM.DLLのようなファイル名が沢山あることから、推測にしか過ぎないがDLLファイル名にはマイツールで使っていた独自の関数をDLLに保存し、ユーザーが通常使用する画面にダイレクトに関数を入力することによりプログラムが動くしくみになっていたのでは・・・と勝手に推測しています。

VisualStudioでDLLの作成できそうなので、唯今模索中ですφ(..)

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

・・は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません

VisualStudio 2017 Community で 新規ファイルを作って

ソースコードを書きデバッグすると、

「Project1\Debug\Project1.exeは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」と表示が・・・

 

 

一旦、ソフトに何か不具合でもあったのか?と思いアンインスールしてもう一度インストールし直して、みれど同じ現象が・・・

もう一度、初歩から・・・と思い

おまじないの何もしないソースを書いてみることに・

今度は、一気にソースを書かずに初歩的な何も実行しないプログラムのソースを記入してデバックなしで開始をクリックすると「このプロジェクトは最新でありません。ビルドしますか?」となるので、「はい」をクリックすると

 

今度は、大成功!!

ちなみに成功しなかった方と成功した方のフォルダを比べると・・・Project1の中身に変わりはなかったのですが・・・

 

 

Debugフォルダの中身が・・・^^;

 

これでは、エラーがでて当たり前ですね・・・

 

C言語vsマイツールで業務系のシステムを作ってみよう! printf vs plintでメニュー画面を表示する

前回に引き続き今回は少しプログラミングをしてみます。今回作ろうと試みてるプログラムは下の動画のようにメニュー画面を表示してみたいと思います。

C言語超初心者なのでプログラマーの方からの色々なご指摘があると嬉しいです。

使用しているOS:Windows7 64bit

開発環境:VisualStudio Community 2017

マイツール:フリーウエアー64bit版

 

 

まず、私が作りたいと思っているのは、以前マイツールというソフトで作ったようなプログラムなのですが・・・

 

VisualStudioでprintf関数を使って文字を表示してみます

 

C言語ではファイルの読み込むのにヘッダファイルを記途します。

#includeは、プログラムに必要なヘッダーファイルを読み込む

<stdio.h>は 標準の入力/出力

printf関数を使う場合、ヘッダファイルは入出力に関する関数が定義されている<stdio.h>を使います。

#includeを翻訳すると「含める」という意味でなんですね。

それではまず、基本的なおまじないを入力してみます(何もしないプログラム)

基本的なおまじない

 

続いて、メニュー画面となるプログラミングをしてみます。

関数の定義の仕方

関数名(” ここに表示させる文字を入力”);← ;=この関数の終わりはここまでと示している

printfで使えるエスケープシーケンス

\t=タブ

\n=改行

画面を中央に表示さる方法を探していましたが見つからず、文字の間に空白を入れて無理矢理?表示させています。

上記をファイルに書き込んでデバック→デバックなしで開始をクリック

すると・・

実行結果

 

なんとなく中央表示されたような感じです。

それでは次にマイツールで表示しみます。

マイツールでPRINT命令を使って表示してみる

マイツールでは、まず、
F⏎で表題を付けてください。となるのでメニュー⏎
1列目の桁数はと聞いてきますが、表はつくらないので一旦Esc
ED命令で下のソースを記入し、W⏎で任意のファイル(ここでは1500ページとします)に書き込みます。

次にPRO⏎E⏎先程書き込んだページ番号(1500)を入力してEsc
すると通常の画面に戻るので、オートプログラムメニューから選択するかRUN⏎メニュー⏎
を押すと・・・

マイツールの実行結果

 

マイツールではある程度慣れてるので一機に色付けや条件式などまでできるのですが・・VisualStudioでは、まだまだです。
c言語ではこのままでは白と黒だけなのでなんとなく味気ないですので次回は文字に色を付けたいと思います。

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

C言語で業務系のシステムを作ってみよう! Visual Studioの設定

以前マイツール for Windowsで業務系のシステムを作ったものに近いシステムを再現したくなりC言語を独学中のメモです。

 

OS:Windows7

開発環境:VisualStudio Community 2017

を使用しています。

VisualStudio Community2017で新規プロジェクトを作成

 

まず無料のVisualStudio Community 2017 をインストールしVisualStudioを起動してみました。

プロジェクトの新規作成

ファイル新規作成プロジェクトの順にクリックします。

 

すると下の画面が表示されるので

VisualC++空のプロジェクト→ファイル名はProject1のままで場所はあらかじめ作成しておいたMytoolのフォルダを指定→OKをクリック

 

ソースファイルの新規作成

ソースファイルを右クリック→追加新しい項目の順にクリックします。

すると新しい項目の追加の画面になるので

VisualC++C++ファイル(.cpp)の順に選択し

ファイルの名前の拡張子を.cに変更し追加をクリックします。

 

VisualStudioで黒画面がすぐ消えるので消えないように設定

デバック→オプション下にある自分のプロジェクト名Project1をクリック

構成プロパティリンカーシステムの順にクリックすると

右側にサブシステムを選択できる画面が表示されるのでサブシステムの右にある▼ボタンをクリックしてコンソール(SUBSYSTEM:CONSOLE)を選択します。

続いて画面右下にある適用ボタンをクリックしOKをクリックすれば完了です。

今回はここまで、次回はメニュー画面を作ります。

 

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