みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

コンソールアプリケーションからWindowsプログラムへの道順

私は現在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にしてから書籍を考えたほうが良いと思いますか?
お時間がありましたら皆さんのご経験をお聞かせください。よろしくお願いいたします。

投稿日時 - 2008-01-31 02:13:17

QNo.3729937

暇なときに回答ください

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

★アドバイス
>テキストファイルの読み込み・整形・書き込みをするプログラムを作成しています。
 ↑
 それなりにプログラム経験があるとの事であれば 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/wingame.html→『Windowsゲームプログラミング』
※2008年2月26日に第2版が発売予定となっています。
※『あらゆるジャンルの土台となるエッセンスを詳細解説!』と宣伝しています。→http://wisdom.sakura.ne.jp/

その他:
・『VC tips』キーワードでネット検索するといろいろと小技集のページが見つかります。
・以上。

投稿日時 - 2008-02-01 12:19:27

お礼

大変ご丁寧なご回答ありがとうございます。
ちょっと分からないところもありましたので、改めてご質問させてください。

>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』という語句だけ覚えておきます。
頑張ってみます。

ご丁寧なご回答ありがとうございます。

投稿日時 - 2008-02-02 01:46:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

MSDNの検索には少々コツが必要です

『ファイルの移動』でしたら『ファイル』『移動』とスペースで区切って検索してみる
思わしくなければ 『ファイル and 移動』 または『ファイル near 移動』といった具合で 2つの単語がどのようにページ内に含まれるかを指定してみる

MSDNの ヘルプ > ヘルプに関するヘルプ > 『情報の検索』リンク > ページ下部の『ヘルプ キーワードの索引の使用に関するヒント』とこのページの下部にある『検索構文のガイドライン』
あたりを参照してみてください

投稿日時 - 2008-02-02 03:09:00

お礼

ご回答ありがとうございます。
やってみたら『File.Move』というものを見つけることができました。
サンプルがあったのでテストしてみます。
ありがとうございます。

投稿日時 - 2008-02-04 00:05:53

ANo.3

『猫シリーズ』の書籍の内容はHPとさほど変わらなかったと思いますよ

やりたいことから関数などを探すのであれば『逆引き』系の書籍を探したほうがいいかもしれません
しかしそれらの書籍も全てを網羅しているわけではないので …

何をしたいのかによって おおよそどのようなグループを探せばよいのかは分かると思います
補足の例ならファイルI/O関連ですよね
私は まず VC付属のMSDNで探しますよ

投稿日時 - 2008-02-01 10:06:17

お礼

ご回答ありがとうございます。
やはり逆引き書籍もあった方が良さそうですね。
VC付属のMSDNを見てみました。
ファイルの移動を調べてみようと思い、キーワードで『ファイルの移動』として、あとフィルタ条件を『Visual C++ドキュメント』としてみたら、『ファイルの移動』という項目が見つかりました。
その項目の内容を見たのですが、なぜか[VBScript]と[JScript]と書かれたサンプルしかありませんでした。
使い方が間違っているのでしょうか?

投稿日時 - 2008-02-02 01:01:09

ANo.2

初めてVC++6を買ってMFCでプログラムしたとき流れがわからずにとまどった覚えがあります。
main(WinMain)関数はないしOn~関数がどこからどうやって呼び出されてるのかわからないしで。
SDKでWindowsのメッセージシステムを理解したらMFCの手軽さがわかりました
今は2005の無料バージョンを使っていてMFC使えないので結局SDKで書いてますが。

投稿日時 - 2008-01-31 09:48:39

お礼

早速のご回答ありがとうございます。
何となくモヤモヤしていたことが、分かったような気がします。
『手間がかかってもSDKでプログラミングすることで仕組みを覚えて、仕組みが分かったら少し手間を省けるMFCでプログラミングする』という事と言うことでしょうか。
Cを始めた当初、文字列を扱う際にcharを使って文字配列を使用していました。
その時は「strcpyとかstrcatとか手間がかかるなぁ」と感じていましたが、そのおかげで文字がどのようにメモリ内へ格納されているか理解できました。
今はstringを使って文字列を扱っているので、割と楽に文字列を扱えるようになっています。
ちょっと意味は違うかもしれませんが、これに似ているのかなぁと思いました。
ありがとうございます。

投稿日時 - 2008-02-01 00:45:50

ANo.1

MFCはWindowsのメッセージシステムを理解していたほうが応用が利くかと思います

時間が有るなら SDK > MFCの順で学習したほうがいいでしょう
書籍ですが『猫シリーズ』あたりでしょうか …
http://www.kumei.ne.jp/c_lang/

投稿日時 - 2008-01-31 03:47:43

お礼

ご回答ありがとうございます。
質問で少々言葉足らずの所がありましたので捕捉させていただきます。
SDKについてですが、『そろそろSDKや…』と書きましたが、正確に書けば『そろそろ本格的にSDKや…』が正しい表現でした。
申し訳ありません。
SDKについては私も努力はしてみました。
ご紹介にある『猫シリーズ』のホームページを見ながら、少しだけ触れてみたことがあります。
『何も見ずに…』は無理ですが、ホームページを見ながらであれば、プルダウンメニューを使ったり、文字を表示させたり、ボタンや文字フォームを使ったりするくらいなら何とかできます。
書籍ですが、ホームページの内容より詳しく書かれているのでしょうか?
ホームページを見ながらやっているときに感じたのは『細かい説明は後で…という箇所が多くて、頭の中に「後で」「後で」という言葉がいっぱいになってしまい困ってしまった』という感覚がありました。
書籍のほうはどうなのでしょうか?
あと、現在のコンソールアプリケーションを作っているときもそうですが、『○○がしたい』と思ったときにどんな関数を使えば良いのかが分からないことが多いです。
これは単に私の経験不足なのかもしれません。
例えば今現在『コンソールアプリケーションでファイルの移動・削除・複製をする関数』があるのか無いのか、私は分かりません。
逆引きの書籍みたいな物も1つくらいは持っていたほうが良いのでしょうか?
…すみません、経験不足でまだまだ分からないことだらけです。
ともあれ、ご回答ありがとうございました。

投稿日時 - 2008-02-01 01:01:14

あなたにオススメの質問