私は現在Visual C++ .NET 2003のスタンダードを使用して、Win32コンソールアプリケーションでプログラムを作成しています。まだまだ経験が浅いのでエラーの連続ですが、ポインタの使用や構造体の使用、クラスの使用や低水準ファイル入出力を利用して、テキストファイルの読み込み・整形・書き込みをするプログラムを作成しています。
そろそろSDKやMFCなどを学びたいと考えているのですが、書籍などでSDKを覚えてからMFCを学んだほうが良いみたいなことが書かれていました。でも、別の書籍ではいきなりMFCでも問題ないみたいなことも書いてありました。現在コンソールアプリケーションを作る私がSDKやMFCを学ぶために道順が良く分からなくなっています。
そこで現在Windowsプログラミングをされている方にお聞きしたいことがあります。質問は次のとおりです。
1、MFCを学ぶなら先にSDKを覚えてからのほうが良いですか?
2、Visual C++ .NET 2003を使用してSDKまたはMFCを学ぶのに、お勧めの書籍があったら教えてください。
3、絶版になっていない書籍を探すとVisual C++ .NET 2005を使用しているものが目立つように思えるのですが、私の所有しているバージョンを2005にしてから書籍を考えたほうが良いと思いますか?
お時間がありましたら皆さんのご経験をお聞かせください。よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
★アドバイス
>テキストファイルの読み込み・整形・書き込みをするプログラムを作成しています。
↑
それなりにプログラム経験があるとの事であれば MSDN サイトのAPI関数を1つずつ
動作を確認するサンプルをいっぱい作ります。この学習方法で使い方、使えるなどを
学びます。マニュアルだけでは理解不十分なので書籍を読みあさります。
>そろそろSDKやMFCなどを学びたいと考えているのですが、書籍などでSDKを覚えてからMFCを
>学んだほうが良いみたいなことが書かれていました。
↑
API 関数のすべてが MFC で利用できるわけではないからです。
SDK の知識があれば MFC でサポートされていない機能をAPI関数を使って独自クラスを
作成して利用できるようになります。また、きめ細かい設定(制御)を行いたい場合にも
MFCを使わずに API 関数を直接使うことで実現できることもあります。
・よって MFC を使う前にある程度の API 関数の学習を行います。
順序としては次のような感じになります。
(1)GUIコントロールの基本操作を大量のサンプルで学ぶ。
(2)MSDNサイトでマニュアルを見ながらAPI関数の使い方を学ぶ。
(3)Vectorさんに登録されているフリーソフトを参考に同じものを実際に作成して学ぶ。
実際にGUIアプリケーションを作成することでデータなどの管理法や知識漏れが発見できるので
サンプル作りはほどほどにしましょう。
>1、MFCを学ぶなら先にSDKを覚えてからのほうが良いですか?
↑
SDK=API関数の使い方を知っておいて損はない。
>2、Visual C++ .NET 2003を使用してSDKまたはMFCを学ぶのに、お勧めの書籍があったら教えてください。
↑
http://www.amazon.co.jp/dp/4797341920/→『Visual C++ 2005 実用サンプルプログラム WindowsプログラミングTips108』
http://www.amazon.co.jp/dp/479733956X/→『明快入門 Visual C++ 2005 シニア編 (林晴比古実用マスターシリーズ)』
>3、絶版になっていない書籍を探すとVisual C++ .NET 2005を使用しているものが目立つように思えるのですが、
↑
基本を学ぶのにVCのバージョンはあまり関係ないと思います。
ただし、2003と2005ではTCHAR型のオプションがマルチバイトからUnicodeに変わっています。
ここに注意しないと2003ではコンパイルできたのに2005ではコンパイルできずソースの大半を
地道に修正するハメになります。2005対応の本ならいいのですが2003やそれ以前の場合は
文字列定数の記述に TEXT() マクロなどを使って記述するように気をつけて下さい。
ついでに VC2008 がありますが知っていますか?
どうせ用意するなら VC2008 が良いようです。
2005 はバグがあったり 2003 より良くない噂を聞いています。私は未確認ですけどね。
とりあえずは VC2003 でも十分だと思います。
参考URL:
http://www.expertmg.co.jp/html/cti/vctips/→『VC++によるWin32プログラミングTips』
http://zhshijie.hp.infoseek.co.jp/api_jp/→『Win32 のサンプル集です』
http://www.geocities.jp/ky_webid/win32c/index.html→『Win32API(C言語)編』
http://homepage2.nifty.com/DSS/pt.htm→『Programming Tips』
http://www.dinop.com/vc/→『VC++ TIPS』
本の紹介:
http://wisdom.sakura.ne.jp/products/books/wingam …→『Windowsゲームプログラミング』
※2008年2月26日に第2版が発売予定となっています。
※『あらゆるジャンルの土台となるエッセンスを詳細解説!』と宣伝しています。→http://wisdom.sakura.ne.jp/
その他:
・『VC tips』キーワードでネット検索するといろいろと小技集のページが見つかります。
・以上。
大変ご丁寧なご回答ありがとうございます。
ちょっと分からないところもありましたので、改めてご質問させてください。
>MSDN サイトのAPI関数
MSDNサイトを見てみましたが、具体的にどこからどのように進んだ場所にあるのか分かりませんでした。
色々探していたらいつの間にか画面に英語ばかりが表示されてしまって焦ってしまいました。
>(2)MSDNサイトでマニュアルを見ながらAPI関数の使い方を学ぶ。
MSDNサイトのマニュアルを見るにはMSDNサイトのトップからどこをどう辿って行けば良いのかわかりませんでした。
あと、個人的なことですが・・・英語は全くダメなのでVC++のHELPとかも、かなり困ってます。
>ついでに VC2008 がありますが知っていますか?
会社ではVC2008の無料版を使ってコンソールアプリケーションをやってます。
知ってはいたのですが、VC2008を使う書籍が見当たらなかったので2005と書きました。
TCHAR型についてですが、VC2003を使って練習に使ったソースをVC2008でビルドしたときエラー出て焦りました。
ヘルプを見て試行錯誤した結果、何とか動くまでに至りましたが、知識不足もあって少し違ったことをすると、再びエラーが出て悩まされました。
だからVC2003またはVC2005+書籍でもっと勉強してから、行く行くはVC2008にしようかと思ってました。
>参考URL:
3番目の『Win32API(C言語)編』がとても良かったです。
ちょっと目が痛くなりそうな色でしたが…。
私はまだまだ初心者なので最初から手順を追って説明してくれているのは大変嬉しいです。
後々必要になるかもしれませんので、5つともブックマークしておきました。
ありがとうございます。
>いろいろと小技集のページが見つかります
まだ小技を使う機会が無いので、『VC tips』という語句だけ覚えておきます。
頑張ってみます。
ご丁寧なご回答ありがとうございます。
No.5
- 回答日時:
MSDNの検索には少々コツが必要です
『ファイルの移動』でしたら『ファイル』『移動』とスペースで区切って検索してみる
思わしくなければ 『ファイル and 移動』 または『ファイル near 移動』といった具合で 2つの単語がどのようにページ内に含まれるかを指定してみる
MSDNの ヘルプ > ヘルプに関するヘルプ > 『情報の検索』リンク > ページ下部の『ヘルプ キーワードの索引の使用に関するヒント』とこのページの下部にある『検索構文のガイドライン』
あたりを参照してみてください
ご回答ありがとうございます。
やってみたら『File.Move』というものを見つけることができました。
サンプルがあったのでテストしてみます。
ありがとうございます。
No.3
- 回答日時:
『猫シリーズ』の書籍の内容はHPとさほど変わらなかったと思いますよ
やりたいことから関数などを探すのであれば『逆引き』系の書籍を探したほうがいいかもしれません
しかしそれらの書籍も全てを網羅しているわけではないので …
何をしたいのかによって おおよそどのようなグループを探せばよいのかは分かると思います
補足の例ならファイルI/O関連ですよね
私は まず VC付属のMSDNで探しますよ
ご回答ありがとうございます。
やはり逆引き書籍もあった方が良さそうですね。
VC付属のMSDNを見てみました。
ファイルの移動を調べてみようと思い、キーワードで『ファイルの移動』として、あとフィルタ条件を『Visual C++ドキュメント』としてみたら、『ファイルの移動』という項目が見つかりました。
その項目の内容を見たのですが、なぜか[VBScript]と[JScript]と書かれたサンプルしかありませんでした。
使い方が間違っているのでしょうか?
No.2
- 回答日時:
初めてVC++6を買ってMFCでプログラムしたとき流れがわからずにとまどった覚えがあります。
main(WinMain)関数はないしOn~関数がどこからどうやって呼び出されてるのかわからないしで。
SDKでWindowsのメッセージシステムを理解したらMFCの手軽さがわかりました
今は2005の無料バージョンを使っていてMFC使えないので結局SDKで書いてますが。
早速のご回答ありがとうございます。
何となくモヤモヤしていたことが、分かったような気がします。
『手間がかかってもSDKでプログラミングすることで仕組みを覚えて、仕組みが分かったら少し手間を省けるMFCでプログラミングする』という事と言うことでしょうか。
Cを始めた当初、文字列を扱う際にcharを使って文字配列を使用していました。
その時は「strcpyとかstrcatとか手間がかかるなぁ」と感じていましたが、そのおかげで文字がどのようにメモリ内へ格納されているか理解できました。
今はstringを使って文字列を扱っているので、割と楽に文字列を扱えるようになっています。
ちょっと意味は違うかもしれませんが、これに似ているのかなぁと思いました。
ありがとうございます。
No.1
- 回答日時:
MFCはWindowsのメッセージシステムを理解していたほうが応用が利くかと思います
時間が有るなら SDK > MFCの順で学習したほうがいいでしょう
書籍ですが『猫シリーズ』あたりでしょうか …
http://www.kumei.ne.jp/c_lang/
ご回答ありがとうございます。
質問で少々言葉足らずの所がありましたので捕捉させていただきます。
SDKについてですが、『そろそろSDKや…』と書きましたが、正確に書けば『そろそろ本格的にSDKや…』が正しい表現でした。
申し訳ありません。
SDKについては私も努力はしてみました。
ご紹介にある『猫シリーズ』のホームページを見ながら、少しだけ触れてみたことがあります。
『何も見ずに…』は無理ですが、ホームページを見ながらであれば、プルダウンメニューを使ったり、文字を表示させたり、ボタンや文字フォームを使ったりするくらいなら何とかできます。
書籍ですが、ホームページの内容より詳しく書かれているのでしょうか?
ホームページを見ながらやっているときに感じたのは『細かい説明は後で…という箇所が多くて、頭の中に「後で」「後で」という言葉がいっぱいになってしまい困ってしまった』という感覚がありました。
書籍のほうはどうなのでしょうか?
あと、現在のコンソールアプリケーションを作っているときもそうですが、『○○がしたい』と思ったときにどんな関数を使えば良いのかが分からないことが多いです。
これは単に私の経験不足なのかもしれません。
例えば今現在『コンソールアプリケーションでファイルの移動・削除・複製をする関数』があるのか無いのか、私は分かりません。
逆引きの書籍みたいな物も1つくらいは持っていたほうが良いのでしょうか?
…すみません、経験不足でまだまだ分からないことだらけです。
ともあれ、ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
指定したフォルダーを最前面表...
-
デジタルフィルタ
-
三次元のグラフを書きたいので...
-
C言語primeについて
-
初級者の質問――time_tについて
-
プログラミング、計算機科学、d...
-
プロダクションコードとは?
-
c言語のサイコロを100回振って...
-
C言語でのソケット通信のclose
-
BASIC
-
フィボナッチヒープです
-
XPathの関数「text()="value"」...
-
Arduino nano(アルドゥイーノ ...
-
プログラムのコーディングって...
-
英語を原型で表示するプログラ...
-
COMインターフェイスを用いたプ...
-
遠方界のプログラム
-
マイコンからプログラムを読み...
-
共分散行列を求めるプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プロダクションコードとは?
-
マイコンからプログラムを読み...
-
vba listviewにおけるtextのAli...
-
自分のHTMLサイトでRSSを読み込...
-
指定したフォルダーを最前面表...
-
Arduino nano(アルドゥイーノ ...
-
プログラミングの問題と解答例...
-
COBOLのS9タイプからXタイプへ...
-
2値化した画像の黒い部分のピク...
-
無限ループ中にある任意のキー...
-
初級者の質問――time_tについて
-
Excel VBA じゃんけん
-
どうやってパソコンなどの凄い...
-
三次元のグラフを書きたいので...
-
VBコンソールアプリ(.NET Frame...
-
NumLockの制御について
-
世界一美しいソースコード
-
expectを使用しない対話型処理
-
Excel VBA で、データベースフ...
-
C言語→MATLABへの変換で、困っ...
おすすめ情報