環境は以下のなります。
言語はC言語 及びC++
IDEはVisual Studio 2010 professional を検討
VC++で作成予定(.NETでは無くネイティブコードで作成したい為)
GUIの作成について分からない点があるので教えてください。
メインウィンドウにボタン等のコントロールを配置する場合や
幅の指定等をプログラムを書いていくのでは無く
C#のフォームデザイナの様にGUI上で操作していく事は出来ますでしょうか。
(必要ならばMFCやATL/WTLの使用も有りです)
ちなみに、上記はダイアログでは無くあくまでメインウィンドウについてです。
.NETは使用せず、ネイティブコードで生成したいのでC++/CLIの使用はしません。
もし可能なら参考になるWEBサイトや書籍等を教えて頂ければ幸いです。
以上、宜しくお願い致します。
C#のフォームデザイナの様にGUI上で操作していく事は出来ますでしょうか。
VC++ の場合、フォームデザイナに相当するものは、リソースエディタ(ダイアログエディタ)になります。
ただし、VC++ のリソースエディタは、C# のフォームデザイナに比べたら、お世辞にも高機能とは言えません。例えば、コントロールの配置(レイアウト)までは、ダイアログエディタで行えますが、ウィンドウのサイズに合わせて、サイズ変更をするような設定(C# のAnchorプロパティのような設定)は行えません。(動作をプログラミングする必要があります。)
この制限は、ダイアログエディタの制限というより、リソーススクリプト(リソースの仕様)の制限によるものです。
■ リソーススクリプトについて - by AOK
http://homepage3.nifty.com/aokura/tips/rc.html
■ Resource-Definition Statements (Windows) - MSDN
ちなみに、MFC や WTL にフォーム用のクラスがありますが、結局は、ダイアログを子ウィンドウとして貼り付けたものになります。
また、Win32 ベースのアプリでも、同様に、ダイアログを子ウィンドウに貼り付けることで実現してます。
以下は、Win32 アプリケーションで、ダイアログを貼り付けるサンプルです。
■ 第255章 ダイアログを子ウィンドウとして張り付ける - 猫でもわかるプログラミング
フォームの開発をダイアログベースで行った場合、GUI アプリケーションの開発のし易さとしては、MFC が一番かと思います。
(ただし、クラスライブラリやウィザード等の使い方を知っていることが前提です。)
■ MFC編 - フォームビューの基本
http://www.g-ishihara.com/mfc_sd_05.htm
■ MFC編 - DDXの基本1
http://www.g-ishihara.com/mfc_dx_01.htm
■ MFC編 - DDXの基本2
デメリットは、
と言う点でしょうか。
以下は、各種ライブラリ毎のアプリケーションのサイズの参考例※です。
(※アプリケーションの種類は、SDIのアプリケーションで、Release ビルドしたものになります。)
使用ライブラリ | 使用クラス | サイズ |
---|---|---|
MFC(スタティックリンク) | CFormView | 3,288KB |
MFC(共有DLL使用) | CFormView | 115KB |
WTL | CDialogImpl | 125KB |
Win32 | - | 82KB |
VC#(Windows Form) | Windows.Forms.Form | 10KB |
使用する開発言語やクラスライブラリの決定は、アプリケーションの形態やサポートするプラットフォーム、開発者のスキルや納期と言った要因によって変わってきますので、一概にこれがベストというものはありません。
例えば、業務アプリ等、画面開発の効率が求められるケースであれば、VC#やVB.NET と言った選択肢もあるかと思います。
つまるところ、ネイティブアプリで、
と言ったところでしょうか。
以下は参考記事です。
■ C++ による Windows プログラミングの学習 (Windows)
http://msdn.microsoft.com/ja-jp/library/ff381399.aspx
■ 猫でもわかるプログラミング
■ ATL/WTLを利用したVisual C++のWindowsプログラミング:CodeZine(コードジン)
http://codezine.jp/article/corner/45
■ ATL/WTL - ATL/WTL による Windows プログラミング
http://home.att.ne.jp/banana/akatsuki/doc/atlwtl2/index.html
■【 G.Ishihara流 】Visual C++ (MFC)超入門
■ Code Recipe - 連載! とことん VC++ | MSDN
http://msdn.microsoft.com/ja-jp/visualc/hh146885
ゼロから学ぶVisual C++―MFCの基本がわかる! (日経BPパソコンベストムック)
- 作者: 日経ソフトウエア
- 出版社/メーカー: 日経BP社
- 発売日: 2003/04
- メディア: 大型本
- クリック: 19回
- この商品を含むブログ (3件) を見る
C++ユーザーのためのWindowsプログラミングの基礎知識―Visual C++とMFCを利用したプログラミング入門 (Ascii books)
- 作者: 柏原正三
- 出版社/メーカー: アスキー
- 発売日: 1999/10
- メディア: 単行本
- クリック: 10回
- この商品を含むブログ (1件) を見る
すごく嬉しいです。メインウィンドウについてもダイアログエディタでレイアウトして貼り付ける様に扱うのは、気付かなかったです。教えて頂いたサイトと書籍を参考に頑張ってみます。本当にありがとうございました。
多くのサンプルコードを実行してみると理解を深めやすいかと思います。
以下は参考になりそうな URL です。
■ Visual C++ Samples and Related Documentation for Visual Studio 2010 - Home
http://archive.msdn.microsoft.com/vcsamples/Wiki/View.aspx?title=ja-JP
■ CodeGuru - Microsoft developers related ideas, articles, tips, tricks, comments, downloads
http://www.codeguru.com/
http://www.codeguru.com/cpp/w-d/ … Windows & Dialogs 関連
http://www.codeguru.com/cpp/controls/ … 各種 Control
■ CodeProject - Your Development Resource(ダウンロードは要登録)
http://www.codeproject.com/
http://www.codeproject.com/KB/mfc/ … MFC 関連
http://www.codeproject.com/KB/wtl/ … WTL 関連
あと、Win32 ベースのアプリケーションがどのような構造になっているか?は「Spy++」というツールを使うことで調査可能です。(CFormView で作成した画面に、ダイアログリソースが貼り付けられていることを確認することができます。)
また、使ったことは無いですが、.NET ベースのアプリケーションを調査する「Managed Spy」というツールもあるようです。
■ 実行中の.NETアプリケーションのオブジェクト構造などを調査/操作するには? - @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/605managedspy/managedspy.html
VC++ での GUI アプリの開発は、覚えることが多くて大変ですが、頑張ってください。
色々と参考になりそうなものも有り勉強になります。
こんなに親切に教えて貰えるとは思っていなかったので、とても感謝してます。
この度は、本当にありがとうございました。