プロが教えるわが家の防犯対策術!

VC++初心者です。
VC++のWindowsフォームアプリケーションを使用してテストプログラムを作ってみようと思っています。

初歩的な質問ですみません。
VC++でWindowsフォームアプリケーションを作成する場合、
フォームのヘッダーファイル(Form.h)にコーディングしていくものなのでしょうか?
ボタンクリック処理など、ヘッダーファイルに作成されてしまいます。

私の先入観で、cppファイルにコーディングするものだと思っていたのですが、
VC++のWindowsフォームアプリケーションとは、こういうものでしょうか?
ヘッダーファイルにコーディングするという感覚が何だか気持ち悪いです。


また、VC++を使用してWindowsアプリケーションを作る勉強がしたいのですが、
「初心者でも分かる+オススメの参考書籍」がありましたら、教えていただけると幸いです。


基本的な質問で意味不明かもしれませんが、ご回答いただけると助かります。

よろしくお願いします。

A 回答 (6件)

> 私の先入観で、cppファイルにコーディングするものだと思っていたのですが、


> VC++のWindowsフォームアプリケーションとは、こういうものでしょうか?

VC++が自動的に吐くコードがC++の標準(つか規範)である「宣言はヘッダ/実装はcpp」に反しているだけです。
ヘッダ内に書かなければいけないなんてルールはどこにもありません。

> ヘッダーファイルにコーディングするという感覚が何だか気持ち悪いです。

僕も嫌いです。反吐が出ます。
なのでVC++が吐いたコードの宣言部だけ残し、実装はcppに移しています。
    • good
    • 1
この回答へのお礼

epistemeさんへ

ご回答ありがとうございます。
的確なアドバイスありがとうございます。

実際に宣言部だけヘッダに残して、実装をcppに移そうと思ったのですが、
どの部分を残して、どの部分を移せば良いのか分かりませんでした。

お時間ある時で構いません。
何か具体的ソースコードを一例にご教示いただけると幸いです。
「フォーム上にボタン1つで、ボタンクリックするとラベルのテキストが変わる」などの
簡単を例にしていただけると助かります。

お手数をお掛けして申し訳ございませんが、よろしくお願いします。

お礼日時:2011/03/08 17:38

少なくともC++初心者がVC++のフォームアプリ(C++/CLI)を作るのは止めた方が良いと思います。

止む終えない事情があれが別ですが。
私は、VC++のフォームアプリはC++の熟練者が.NetFrameWorkを使って容易にウィンドウをアプリを構築するためのものと思っています。
C++とC++/CLIの文法の違いやクラスの何とかも分からない人がやるには難しすぎると思うのですが、prapragmaさんはC++には慣れておられるのでしょうか?
    • good
    • 0
この回答へのお礼

zwiさんへ

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

恥ずかしながらC言語しか分からず、C++も初心者です。
いきなりハードルの高いものに飛びついてしまいました(汗)

まずは、C++から勉強したいと思います。

的確なアドバイスありがとうございます。

お礼日時:2011/03/10 15:45

#1です。



> #3
>ヘッダに実装を書くと実装に変更を加えるたびにそれをinclude
>しているすべてを再コンパイルしなければならなくなります。

それは知ってるけど、システムのトップ階層(メインフォーム)なら、
includeされることが無いからどっちでもいいと思うけど?
GUIアプリケーションのメインフォームは汎用性無いことが多いですし。
・・・とは言っても実は私も分けています(^ ^;
Builder使うこと多いですし。
    • good
    • 0

> 何か具体的ソースコードを一例にご教示いただけると幸いです。



僕はフォームに関わる部分にC++/CLIを使いません。
C#の方が楽ですからから。 C++の方が書きやすい部分をC++/CLIで書き、
C#から呼び出しています。
    • good
    • 0

> 定義と実装を一つのヘッダ".hpp"で管理することがよくあります。



とんでもない、原則「やっちゃダメ」です。
ヘッダに実装を書くと実装に変更を加えるたびにそれをinclude
しているすべてを再コンパイルしなければならなくなります。
宣言と実装を分離するのがC++の流儀です。

# 唯一の例外がtemplate
    • good
    • 0

ヘッダ".h"と実装".cpp"に分けた場合、


同じインターフェースなのに二つのファイルを管理するようになります。
C++ではクラス構造が複雑なこともあるので、面倒です。
なので定義と実装を一つのヘッダ".hpp"で管理することがよくあります。
また、テンプレートは定義と実装を一つのヘッダに書かないと、
コンパイルできません。
    • good
    • 0
この回答へのお礼

ICE FALCONさんへ

ご回答ありがとうございます。
テンプレートやクラスについても知識不足なので、勉強してみます。

ありがとうございました。

お礼日時:2011/03/08 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!