1 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:44:23 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
829 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:41:00 ] 下のように、クラスAAのインスタンスを、メモリーに割り当てたときに。 コンストラクタとデストラクタをどうやって起動したらいいのでしょ? class AA { int i1,i2; AA(); ~AA(); } void func() { char dat[100]; AA *dat; dat = (AA *)dat; }
830 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:44:43 ] 割り当てたら勝手に実行されるんじゃないの 解放したらまた同じく
831 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:46:14 ] 上の場合、ポインターがセットされるだけなので、実行されないです。 この場合の実行の仕方を知りたいです。
832 名前:デフォルトの名無しさん [2009/06/07(日) 10:46:35 ] Win32アプリケーションとWindowsフォームアプリケーションでは、何が違いますか?
833 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:48:55 ] >>832 フォームの使用・非使用
834 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 11:46:45 ] WinMain/main
835 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 12:38:05 ] VisualStudio 2008 EEのVC++で公開ソースをビルドしようとしたのですが、 afxwin.hがないとエラーが出たので”Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う” を見て設定しました。そして、ビルドをしたら error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません というエラーがでます。ソースは _AFXWIN_INLINE CMenu::operator==(const CMenu& menu) const { return ((HMENU) menu) == m_hMenu; } _AFXWIN_INLINE CMenu::operator!=(const CMenu& menu) const { return ((HMENU) menu) != m_hMenu; } _AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu)); return this == NULL ? NULL : m_hMenu; } となっており、2行目と4行目でエラーがでます。 どう書き換えればエラーが直るでしょうか。
836 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 12:45:37 ] MFCはEEじゃ使えないからダメ。
837 名前:835 mailto:sage [2009/06/07(日) 13:03:46 ] >>836 ということはソースを修正しても無駄ということですね。ありがとうございました。
838 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:57:38 ] >>829 の質問別スレで聞いて見ます。
839 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:10:05 ] 実体がないのにコンストラクタは働かない。
840 名前:デフォルトの名無しさん [2009/06/07(日) 14:53:27 ] 小生、昨日、サッカーを久しぶりにテレビ観戦して 試合後、ニュー速で試合を見て思ったことを、色々書いたら ぼっこぼこ馬鹿にされたなりよ。やっぱ小生がそこそこ偉い発言できるのはMFCしか無いと思ったなりよ。
841 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 10:00:06 ] DLLなど複数プロジェクトが含まれるソリューションを開発する時、 ソース内のincludeパスの指定どうしてますか? VC++の場合はProjectDirとSolutionDirの2つがデフォルトで 使えると思いますがこれの使い分けとか気にしてます?
842 名前:デフォルトの名無しさん [2009/06/08(月) 11:21:47 ] VS2008で、Cのプログラムをコンパイルするとき、CとしてコンパイルするかC++として コンパイルするかというのは、自分で決められますか?
843 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 11:27:48 ] できる。 IDE内ならオプションにあるべ。 コマンドラインでも指定できるし、何も指定しないと拡張子から区別される。
844 名前:デフォルトの名無しさん [2009/06/08(月) 12:40:49 ] >>843 ありがとうございます。 別ファイルにある double func(); というのをmain()から呼んでる時、main()のすぐ上でint func();という宣言があるので C++では呼び出せてたのですが、ふとこれがCだったら呼び出せてなかったっけ、と気になった ので…。
845 名前:デフォルトの名無しさん [2009/06/08(月) 14:15:29 ] ソースを書いてる時のコメントの色が見づらいので変更したいのですが色とかはどうやって変更したらいいですか?
846 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:19:03 ] ツール - オプション - 環境 - フォントおよび色
847 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:36:58 ] >>846 ありがとうございます!!
848 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 19:17:07 ] VC6 いまだに使ってますけど ゲーム作成にしか使わないんですがバージョンアップする必要ってあります? 値段とファイルサイズだけがバージョンアップされあまり期待できないのですが
849 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:00:50 ] >>848 VC6はもうC++対応じゃないと思った方がいい。VC6言語だと思った方がいいくらい、標準と違う。 それを踏まえると、標準C++を学びたいわけでもなく、 現状のゲーム作成で困ってないなら変えない方がいいんじゃないかな?
850 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:02:05 ] Microsoft Visual C++ 2008 Express Edition 無償で公開されているから体験してみるもよかれ!
851 名前:デフォルトの名無しさん [2009/06/08(月) 20:08:53 ] 便乗質問・・・ VC6のStandardでしこしこ アプリ作ってんだけど、 ぷろになりたいと思ってきた。その場合、Proffessional editionの方がいいのかえ?
852 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:17:07 ] VC6のサンプルプログラム見せるよりは、新しいVCのサンプルの方が可能性は高い
853 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:18:38 ] サンプル −> 自作ソフトのサンプル
854 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 20:21:19 ] >>850 EE版だとMFC動かないんだよね .netFrameworkは開発者のオナニーがたくさんつまった作品 オナニーたくさんやった挙句なにも便利になっていない 相変わらず細かいことをするにはいつもどおりの苦労を迫られるし 今度はやけにネットの情報が少ない
855 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:01:31 ] .NETで楽するならC#やVB.NETのような新言語でやらないとだめだ。 C++でやったら両方の悪いとこ同士が増幅されるだけ。 >>851 VC6の頃だと、Standardでは作ったものの商用利用が認められていなかった気がする。 そういう意味でProfesionalが必要だった。 あと、Stdでは最適化が使えない。 VC2005 (VC8)の辺りから、エディション問わず商用利用可能になっている。 最適化も基本的なものは全エディションで使えるし。
856 名前:デフォルトの名無しさん [2009/06/08(月) 21:05:55 ] Visual C++ Express Editionにboostを入れようとしています。 (1) boost のダウンロードwww.boost.org/ のWelcome - Download から boost_1_38_0.zip とboost-jam-3.1.17-1-ntx86.zip をダウンロード (2) boost_1_38_0.zip を展開し、内容をC:¥develop へ展開する。(他のディレクトリでも可) (3) boost-jam-3.1.12-1-ntx86.zip を展開し、bjam.exe をC:¥develop¥boost_1_38_0 へコピー (4) コマンドプロンプトを開き、ディレクトリを移動。 CD C:¥develop¥boost_1_38_0 (5) "C:¥Program Files¥Microsoft Visual Studio 9.0¥Vc¥bin¥vcvars32.bat" を実行 (6) bjam --build-type=complete msvc stage を実行 (7) Visual Studio を起動し、[ツール] > [オプション] を開き[プロジェクトおよびソリューション]>[VC++ディレ クトリ] を開く。 右上の「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選び、新しい行を作って "C:¥develop¥boost_1_38_0" を追加する。おなじく「ライブラリファイル」に"C:¥develop¥boost_1_38_0¥ stage¥lib" を追加する。 と手順どおりにしているのですが、 fatal error C1083: include ファイルを開けません。'boost/array.hpp': No such file or directory というエラーがでてコンパイルができません。 どうしたらいいですか??
857 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:17:20 ] そのエラーメッセージに書いてある通り
858 名前:デフォルトの名無しさん [2009/06/08(月) 23:39:12 ] クリティカルセクションの質問なのですが、 main()でInitializeCriticalSection()やって、その後_beginthreadex()します。 その後以下の処理を行うスレッドを100個起動させます。 EnterCriticalSection() カウンターをインクリメント LeaveCriticalSection() そして、main()関数内でWaitForMultipleObjects()で全スレッドの終了を待ちます。 WaitForMultipleObject()の直後にカウンターの数を表示させているのですが、 これが100になりません。(95とか55とか) クリティカルセクションの使い方が間違ってるのでしょうか?
859 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:43:40 ] カウントの処理に問題があるのでは?
860 名前:デフォルトの名無しさん [2009/06/08(月) 23:58:22 ] WaitForMultipleObject()が全スレッドの終了まで待っていないようです。
861 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:12:24 ] >>858 それ以前に、そのスレッドちゃんと全部生成されていることを確認したか?
862 名前:デフォルトの名無しさん [2009/06/09(火) 00:21:34 ] >>861 確認しました。やっぱりWaitForMultipleObject()がスレッドの完了待ちをしてませんでした。 WaitForMultipleObjects(100, hThreads, TRUE, INFINITE); この形で呼び出していて、戻り値は-1でした。
863 名前:デフォルトの名無しさん [2009/06/09(火) 00:31:03 ] とりあえず自己解決しました。 main()の最後に while(count!=100) ; みたいなループを入れると動きました。なんとか動きそうです。
864 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:39:48 ] WaitForMultipleObject の第一パラメタ(最大ハンドル数)は 64 まで
865 名前:デフォルトの名無しさん [2009/06/09(火) 00:50:56 ] >>864 ええーっ、64ですか? そうか、MAXIMUM_WAIT_OBJECTSですか… じゃあ65以上のスレッドを待ちたい時はどうすんのかと思ってMSDN見たら、 64個のスレッドを待つまとめスレッドを作って、そのスレッドを待つようにしろ、 と書いてました。そんなの今からかけないよ〜 でもありがとうございました。
866 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:26:07 ] スレッドが100個とかどういうとき必要になるんだろう。
867 名前:デフォルトの名無しさん [2009/06/09(火) 10:37:05 ] HTTPサーバみたいなサーバプロセスを書いているのですが、コネクションが来るたびに スレッドを生成してWorker Threadパターンでやってます。今朝は100個のコネクション が一挙にキタ場合のテストをやろうとして、ああなってしまいました。
868 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:53:55 ] アルゴリズムってなんですか? 分かりやすい例えを教えてください
869 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:17:33 ] >>868 アルゴリズムすなわち解法 問題と答えをつなぐものがアルゴリズム。 たとえば「1〜10の総和はいくら」という問題に Aさんは 1+2+3+4+5+6+7+8+9+10 Bさんは 11×5 と考えるだろう。 Aさんの解法もBさんの解法も「1〜10の総和はいくら」の答えを求めるアルゴリズム。
870 名前:868 mailto:sage [2009/06/09(火) 16:19:35 ] 当然正しい答えが出なきゃならんし,有限の時間で答えが出なきゃならん。 ってかスレ違いだと思われ。
871 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:44:48 ] ググれ
872 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:37:15 ] MFCについて質問があります。 ダイアログ上のボタンを押下したときに、エディットボックスを追加する関数を加えたいのですが、 エディットボックスを追加する関数というのはあるのでしょうか? また、エディットボックスを追加すると同時にメンバ変数も追加することができるのでしょうか?
873 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:50:02 ] >エディットボックスを追加する関数 動的に追加するならCEdit::Create(); 動的に追加せずとも、非表示でエディットボックスを作成しておき、ボタンをクリックしたときに表示させる という手法もある。 >メンバ変数も追加することができるのでしょうか メンバ変数はあらかじめ用意しておく必要がある。
874 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:59:32 ] CObject は動的生成機能もサポートしています。これは実行時に特定のクラスのオブジェクトを作成する機能です。
875 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:03:27 ] >>873 さん ありがとうございます。
876 名前:デフォルトの名無しさん [2009/06/09(火) 22:09:10 ] 仮想関数やWindowsハンドラをオーバーライドして 基低クラスの関数を最後に呼び出すかどうかってオーバーライドする関数によって違うみたいなんだけど 初心者じゃそこらへんわからないよね(´・ω・`)
877 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:12:00 ] 「非標準の拡張機能が使用されています : 右辺値のクラスが左辺値に使用されます。」って警告ってどうやったら取れるんでしょうか めっちゃいっぱい出ていて困っています
878 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:12:48 ] >>876 何を...>>876 君、君が何を言っているのか分かんないよ
879 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:14:44 ] >>877 とりあえず再現するソースを公開しろ
880 名前:876 [2009/06/09(火) 22:17:22 ] たとえばPrecreateWindow関数をオーバーライドすると BOOL CMyNaviView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを // 修正してください。 return CView::PreCreateWindow(cs); } って、最後にreturn CView::PreCreateWindow(cs);の一文が入るんだけど、 本を読んでるとこれをreturn TRUE;に変更するとか、初心者じゃわからないよね(´・ω・`)
881 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:30:54 ] PreCreateWindow()の戻り値の意味を知っていればわかるだろ。 で、君がわからないのか、それとも他人がわからないことを嘆いているのか、どっちだ?
882 名前:876 [2009/06/09(火) 22:34:36 ] わしがわからんのじゃけど。
883 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:38:24 ] PreCreateWindow()が FALSE を返すとウィンドウは作成されない。 じゃ、CView::PreCreateWindow() はどういう時に FALSE を返すのか、オーバーライドした関数ではどうすべきか、 なんてなことを勉強していくしかないな。AAAA
884 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:39:33 ] うう、すまぬ。最後のAAAAは無視してくれ。 Shiftキーと同時に押しちまった。
885 名前:876 mailto:sage [2009/06/09(火) 22:42:07 ] わかりました。ありがとう。 道は長そうだけど、そういうふうに意識して勉強していきます。 ありがとう。
886 名前:デフォルトの名無しさん [2009/06/10(水) 01:08:54 ] _beginthreadex()で作ったWindowsのスレッドに、各スレッドごとに独自のデータを 保持させることはできますか?
887 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:18:39 ] >>886 つTlsAlloc, TlsFree 等
888 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:34:25 ] >>886 生成するスレッドにはパラメタを1つ渡せるので、スレッドの単位で作成したクラスや構造体の インスタンスアドレスを渡せば良い
889 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:29:45 ] フォルダごとコピーしてデスクトップに持ってきてデバッグしようとしたらデバッグ情報が読み込めません、シンボルが一致しません って警告が出るんですけどどういう意味ですか?
890 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:39:29 ] >>889 デバッグ情報にはソースファイル位置などがフルパスで格納されているから フォルダを移動すると正常にデバッグできない
891 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:40:12 ] >>890 じゃあ、どうすればいいんです?
892 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:42:49 ] 元の位置でデバックする
893 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:47:20 ] それじゃ意味ねええええっうぇwっうぇえww
894 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:52:43 ] シンボルサーバ作ればいいだけだろ
895 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:02:50 ] /::::::::::::::::::( /::::::::::ヾ ヽ ヽゞ::::::::::::::::ヽ /::::::::::::::::::::::::::::::::::ヾ i i ソ::::::::::::::::: ヽ /:::::::::::::::::::::::::::::::::::::ゞ ! i ゞ::::::::::::::::::ヽ /:::::::::::::::::::::──< ̄● ̄>─ | i |─< ̄● ̄>─:::::::ヽ |:::::::::::::::::::::/  ̄  ̄ ─ 、  ̄  ̄ ヽ::::::::| . |:::::::::::::::::::/ / ヽ ヽ:::::::| ..|::::::::::::::::::/ i | \:::::|ぶぁぁか .|:::::::::::::::::/ ヾ 丿 _ \::::| ..|::::::::::::::::/  ̄ ─ _ ` ─ ̄ ' ─ ̄ ヽ:::| |:::::::::::::::: ─ ー | | ー─ ̄ ヽ:| ヽ:::::::::::::: | ━ ─ ─ ー ─ - | | ─ ー ⌒ ─ | ヽ:::::::::::::| _ _─ ─││ ──/ヽ_ヽ | ヽ::::::::::::| ─ ̄ _─ ̄ ノ /─ | ヽ:::::::::::| _ _ ─  ̄ / 丿 | ヽ::::::::::| ヽ ̄ / ̄ - -_ / / / \:::::::::| \ ノ -_ _ ) / / / \:::::::| \ ノ ─' ノ / \:::::| ─ _ __ ー ' /
896 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 00:06:23 ] リモートログインしちゃえよ
897 名前:デフォルトの名無しさん [2009/06/12(金) 02:02:02 ] MFCのために¥15000だしたいんだけど、金無いなりよ。
898 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 02:03:59 ] >>897 学生ならドリスパでタダでVS2008プロを落とせる
899 名前:デフォルトの名無しさん [2009/06/12(金) 09:55:20 ] VC++eeなんですけど プロジェクトフォルダで、自分の書いたソースファイルとかプロジェクトの設定が書いてあるファイルなどと、 ビルドした時の中間ファイル?とかビルドファイルとフォルダを変える事ってできますか? どこでも参照できるように自鯖のサブバージョンに入れてみたんですけど、容量がどんどん肥大化していく・・・
900 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 10:01:52 ] ドリスパって何?
901 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:19:53 ] サッカーのチーム
902 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:22:13 ] >>899 プロジェクトのプロパティの全般カテゴリに中間ディレクトリ指定できんだろ。 んまーそこで困ってるならsvnの無視プロパティ活用しろよとは思うが。