1 名前:Part28の1000 mailto:sage [2008/02/15(金) 01:45:56 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
404 名前:397 mailto:sage [2008/03/18(火) 02:57:59 ] >>403 やっぱりそうですか。ファイルの役割に着目してフォルダ分けする のが自然ですよね。 僕の場合、Visual C++のFileViewのツリーで細かくフォルダ分けして ファイルを分類しています。だから実際のファイルのフォルダ分けは 特に必要がないように感じていました。FileViewのツリーとWindowsの フォルダのツリーを同じに保つのはめんどくさい(片方を変更したら もう片方も変更しなければならない。)ので実際のファイルは分類せず に1つのフォルダに放り込んでいました。 一人で開発していると、このような方法が一般的かどうかわからない ので、アホなことをやってるんじゃないか、とか思うことが良くあります。
405 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:02:52 ] 一般的ではないアホなことをやっている 普通はプロジェクトごとにフォルダわけするだろ さらに別プロジェクトでも共有するライブラリなどのヘッダも 別フォルダにしてパスを通す
406 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 08:37:57 ] 大量のソースがある巨大プロジェクトなのかと思ったけど ファイル名の衝突とか言ってるから、今まで作ってきた全然関係ないプログラムが 1つのフォルダにごっちゃごちゃに存在してるということか?
407 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:33:31 ] >>397 参考までに衝突する(した)ファイル名を教えてほしい 一人で作っていて名前が衝突するって考えられんのだが
408 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:04:09 ] >>362 みたいな感じでVisualC++起動時にエラーが出るんですけど、解決法は無いですか
409 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:06:35 ] 新しいパソコン買う
410 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:08:29 ] >408 しつこい
411 名前:408 mailto:sage [2008/03/18(火) 19:21:38 ] 初心者に教えるスレでそんな風に言われても…
412 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:29:36 ] いやだから新しいパソコン買えよ てかまずPCスペックぐらい書けや
413 名前:408 mailto:sage [2008/03/18(火) 19:33:50 ] >>412 WindowsXP HomeEdition Intel Celeron M processor 1.60G メモリ 704M
414 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:53:55 ] OSから再インストール、それで駄目なら新しいパソコン買う
415 名前:408 mailto:sage [2008/03/18(火) 19:59:06 ] 分かりました。ありがとうございました
416 名前:デフォルトの名無しさん [2008/03/18(火) 21:47:42 ] VC++2008でC++の勉強を始めたものです。新規プロジェクトでコンソールアプリを選択して 新規プロジェクトを作成し、そこに既存のCPPファイルとかヘッダとかを追加したのですが、 ヘッダがコンパイラに認識されておらず、コンパイル時にヘッダがないというメッセージが でてコンパイルできません。どうすればよいですか? どうかよろしくお願いします。
417 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:06:01 ] ヘッダーがないなら ヘッダーを用意しなきゃだめじゃない。
418 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:15:08 ] >>416 全部がファイルシステム上で同じフォルダにあるか? 違うフォルダにあるなら、同一のフォルダにまとめてから追加しろ。
419 名前:デフォルトの名無しさん [2008/03/19(水) 00:43:20 ] 今windowsにログインしているユーザーに 管理者権限があるかどうかを判別する関数があれば教えてください。
420 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:51:44 ] Administratorsグループに属しているかってこと?
421 名前:デフォルトの名無しさん [2008/03/19(水) 01:43:08 ] すいません、今インストールするなら Visual C++ 2008 再頒布可能パッケージ (x86) だけでいいでしょうか? Visual C++ 2005 再頒布可能パッケージ (x86) も入れておいた方がいいですか?
422 名前:デフォルトの名無しさん [2008/03/19(水) 04:46:11 ] 最近VisualC++2005ExpressEditionをインストールして 簡単なHelloWorldプログラムを書いてビルドしようとしたのですが エラーが出て先に進めなくなってしまいました。 OSはWindows2000。win32/コンソールアプリケーション/空のプロジェクト、で書いてます。 エラーの内容は以下です。↓ 致命的なエラー C1902 プログラム データベース マネージャが一致していません。セットアップが正しく行われているか確認してください。 マニュアルによると対処方は以下です。↓ プログラム データベース ファイル (.pdb) は、 コンパイル時に検出されたものより DBI.dll のより新しいバージョンを使用して、作成されました。 最新バージョンの DBI.dll をシステムにインストールしてください。 しかしパソにはDBI.dllはインストールされておらず、どこから入手したものか見つかりません。 エラーの前に次の警告も出ていました。 警告 D9028 : 簡易リビルド時のエラーです、通常のビルドに戻します マニュアルによると、 プロジェクトの .idb ファイルが破損しています。このファイルを削除して、リビルドしてください。 しかしそもそも.idbファイルが生成されていません。 プロジェクトのプロパティで簡易リビルドをオフにしたら出なくなりましたが、 要するに簡易リビルドできないということなので、どうも落ち着かないです。 もしわかる方いたらおしえてください。
423 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 06:10:26 ] リビルド 最初から全部ビルドやりなおし 簡易リビルド 一部のファイルを除いてビルドやりなおし 一回リビルド通ったら次からは簡易リビルドで問題ないはず
424 名前:397 mailto:sage [2008/03/19(水) 08:05:03 ] >>407 僕のプログラムでは、字句解析を行うLexクラスというクラスが 二つ必要です。二つのLexクラスを作って、別々の名前空間に入れました。 1つは、DIC::Lexクラスです。 もう1つは、CP::Lexクラスです。 これらのクラスのためのヘッダと実装のファイル名はともに lex.hとlex.cppですから衝突しました。 僕はプリフィックスを付けて二つを区別しました。 (dlex.h, dlex.cpp) と (clex.h, clex.cpp) これで不満はないのですが、プリフィックスを付けで衝突を避ける 代わりに、ファイルをフォルダで分類することによって衝突を避ける という手もあるかな、と思ったのです。
425 名前:397 [2008/03/19(水) 08:06:51 ] >>405 さんのレスが非常に気になるのですが、僕が>>404 で書いたことが うまく伝わってないような気がするので、もう一度きちんと説明します。 僕のプロジェクトのフォルダ構造は次の通りです。 <CoolCorpus> プロジェクトのフォルダ ├<Release> ├<Debug> ├<souce> ├<data> └<test> 上記のCoolCorpus\souceにすべてのソースファイル(26個の.hファイルと 36個の.cppファイル)をフォルダ分けせずに置いています。 62個のファイルは全てCoolCorpusプロジェクトに参加しています。 従って、ワークスペースウィンドウの "FileView" タブのツリーには62個の ファイルが表示されています。 "FileView"タブのツリーは、フォルダを作って自由にカスタマイズできます。 そこで、僕はデフォルトで作成される3つのフォルダ Source Files, Header Files, Resource Files を削除してしまいました。そして以下のようにツリーを構成 しました。(ファイル数が多いので簡略化しました。)
426 名前:397 [2008/03/19(水) 08:07:21 ] <CoolCorpus ファイル> ├ <下請け> │ ├<StdAfx> │ │ ├StdAfx.cpp │ │ └StdAfx.h │ └<File> │ ├file.cpp │ └file.h ├ <Core> │ ├<Dictionary> │ │ ├<Lex> │ │ │ ├dlex.cpp │ │ │ └dlex.h │ │ ├<Freq> │ │ │ ├freq.cpp │ │ │ └freq.h │ │ ├dictionary.cpp │ │ └dictionary.h │ └<Corpus> │ ├<Lex> │ │ ├clex.cpp │ │ └clex.h │ ├corpus.h │ ├corpus1.cpp │ ├corpus2.cpp └ main.cpp
427 名前:397 [2008/03/19(水) 08:08:08 ] 1つのクラス用に hと.cppを作り、それらをセットにして一つのフォルダに 入れています。フォルダといっても、FileViewのフォルダです。 本当のフォルダ(Windowsのフォルダ)ではありません(念のため)。 ソースを読むときは、このツリーをクリックしてソースを表示させます。 "ClassView"タブは全く使いません。 さて、この方法は変でしょうか? 開発現場での方法が知りたいのですが。。。
428 名前:デフォルトの名無しさん [2008/03/19(水) 09:12:13 ] 以下のプログラムから出力される数字を、 wavファイルにするにはどうすればいいでしょうか・・ #include <iostream> #include <math.h> using namespace std; const int rate=44100; int p(double q, int f, int t) { const double pi=3.1415; double x; x=sin(2*pi*f/rate*q); cout << int(x*127+128+0.4999); cout << "\n"; if (f<t) p(q,f+1,t); return 0; } int main(void) { p(440.0 , 0, rate); return 0; }
429 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 10:00:38 ] WAVファイルのヘッダを知りたいのか ファイルへのバイナリ出力が知りたいのか まあ両方書いてもいいけど、それあっという間にスタック食いつぶさないか? 普通にループでいいべ。
430 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 10:14:09 ] >427 オープンソースで開発してるのがいっぱいあるから好きなだけ見ればいい
431 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 10:36:46 ] >>429 すみません、両方です。
432 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 10:45:18 ] ProgramingWindowsにsinwaveとかいうサンプルあったと思う
433 名前:デフォルトの名無しさん [2008/03/19(水) 14:17:11 ] Visual C++ 2005の超初心者ですが、今、誰か教えてくれる人いらっしゃいますか? ちなみにC言語では簡単なプログラムをいくつか作ったことありますが、VCは初めてです。
434 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:19:27 ] 何?
435 名前:デフォルトの名無しさん [2008/03/19(水) 14:22:26 ] MFCアプリのダイアログベースでボタンを用意し、そのボタンを押したらRS232で通信するプログラムを作りたいです。 www.geocities.jp/terukat/_geo_contents_/win/comm.html これを参考に作成したつもりですが、全くの初心者なので、これをどう使っていいのかがわかりません。 一応、それぞれをinit, write, readとして関数にし、ボタンクリック動作の関数で呼び出そうとしたんですができません。 クラスの概念なんかをもっと理解しなければいけないと思うのですが、時間もないので教えて頂ければ幸いです。 よろしくお願いします。
436 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:25:36 ] >>427 はっきりいいますがアナタは頭がおかしいです 同一のプロジェクトに参加しているのならば別のファイル名にするべきです
437 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:28:00 ] まずはファイルを読み書きするプログラムから勉強すれば? あとは通信でも同じようなもんだ
438 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:30:28 ] >>435 分不相応な事はしない事です。 まったくの初心者であればまずは理解からはじめましょう
439 名前:デフォルトの名無しさん [2008/03/19(水) 14:40:12 ] >>437 さん アドバイスありがとうございます。 ファイル読み書きやってみます。 ちなみに私のやってることって考え方間違ってますか? init関数にして呼び出したりって。 Cでのイメージが抜けないのですが、、、
440 名前:デフォルトの名無しさん [2008/03/19(水) 14:42:51 ] >>436 さん 全くその通りです。ほんとはもっと時間をかけてやるべきですが、仕事で時間が限られているので相談させてもらいました。。。
441 名前:440 [2008/03/19(水) 14:43:43 ] 間違えました。>>438 さんです。
442 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:44:34 ] そういうサンプルなら探せばあると思う
443 名前:デフォルトの名無しさん [2008/03/19(水) 14:56:32 ] VC++ 2005ProでPCの情報を取得する→CSVで指定したフォルダに吐き出す というプログラムをあと三日で作成しなければなりません。 慣れた方なら1日で出来るみたいに言われたのですけど、 VBしかやったことなくてプロジェクト作成からさっぱりです。 本当はちゃんとC++の勉強をしてから取り組んだ方がいいのでしょうが 時間がないので無理なんです。 誰か手取り足取り教えてくれませんか? ちなみに取得する情報は PC基本情報 ハードウェア基本情報 ユーザー情報 ネットワーク情報 論理ドライブ情報 物理ドライブ情報 プリンタ情報 インストールされている全アプリケーション情報 です。 お願いします。。。
444 名前:デフォルトの名無しさん [2008/03/19(水) 14:57:56 ] >>432 その本(サイトじゃないですよね)って、5版>4版>3・・・ って考えていいんですか。
445 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:26:52 ] >444 最初に出てくるサンプルは単に正弦波を描画するやつで 音を鳴らす用に改造したサンプルはあとの方に出てくる サウンド関係のサンプル AddSynth BachTocc Drum KBMidi Record1 Record2 Record3 SineWave TestMci WakeUp
446 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:28:56 ] 上下卷必要?
447 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:23:44 ] >>443 仮にWMIで取得できる情報だけだったら、 VBScriptやVB6系でやるのが簡単だと思う。 あと、手取り足取り教えるほどのお人好しはここにはいないと思うぞ。
448 名前:443 [2008/03/19(水) 16:28:58 ] >>447 そうですか。。。 VB6のソースはあります。 これをVC++2005で作り直さなければならないのです。
449 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:02:14 ] そういえばMSDNにシリアル通信のサンプルがあった //--------------------------------------------------------------------------- // // Module: tty.c // // Purpose: // The sample application demonstrates the usage of the COMM // API. It implements the new COMM API of Windows 3.1. // // NOTE: no escape sequences are translated, only // the necessary control codes (LF, CR, BS, etc.) // // Description of functions: // Descriptions are contained in the function headers. // //--------------------------------------------------------------------------- // // Written by Microsoft Product Support Services, Windows Developer Support. // //---------------------------------------------------------------------------
450 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:04:51 ] シリアルは慣れてないとハマるから、mscomm.ocx使ったほうが楽かも
451 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:40:12 ] >>397 職業プログラマだけど、自分はそうやってるし、他の人もそうやってる。 一般的かどうかまでわからないが、合理的な方法と思う。 実際のディレクトリ構成は、ファイル数が多くなったら機能ごとに分けてる。 その方が管理しやすいから。 ファイル名はプリフィックスをつけて一意にする。 ディレクトリが別になってても、単体で見たときに区別できないから。
452 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 18:08:53 ] 下記のソースでVC++6.0では問題なかったのですが VC++.net 2003で実行すると HRESULT hr = com_object_type::CreateInstance(&sink_); のところでアプリ(IE)が落ちてしまいます。 6.0と2003ではATL関連が結構変わってしまったようなのですが これはソースを直すべきなのでしょうか? あるいはプロジェクトのプロパティなどで対処できるものでしょうか? もしご存知の方いたら教えてくださいませ。よろしくお願いします。 ////ecom_event_sink : シンクラッパー template<class Event> class com_event_sink { typedef CComObject<Event> com_object_type; com_object_type* sink_; CComPtr<IUnknown> unk_; public: HRESULT create() { HRESULT hr = com_object_type::CreateInstance(&sink_); if ( SUCCEEDED(hr) ) sink_->QueryInterface(IID_IUnknown,(void**)&unk_); return hr; } com_object_type* operator->() { return sink_; } };
453 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 18:29:00 ] >>452 CoInitialize()はちゃんとやってる?
454 名前:397 mailto:sage [2008/03/19(水) 20:53:43 ] >>430 なるほと。調べてみます。お勧めのがあったら教えてください。 >>436 やっぱりそうですか。 >>451 丁寧にありがとうございます。不安が解消されました。 今後、次のようにしようかと思っています(今のところ)。 (1) (今まで通り)すべてのファイルのファイル名が一意になるようにする。 (2) ファイルを機能別にフォルダ分けする。 (FileViewでの分類とは別の観点で分類する)
455 名前:451 mailto:sage [2008/03/19(水) 21:29:52 ] >>454 >(2) ファイルを機能別にフォルダ分けする。 > (FileViewでの分類とは別の観点で分類する) FileViewと同じにした方が楽だと思うけど。 ちなみに今のプロジェクトでは主にnamespaceにあわせてる。フォルダ階層も。 比較的管理しやすい。
456 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 23:35:16 ] OPENFILENAME でファイルを読み込む場合に最初にパスを指定しないと プログラムを再起動しても最後に開いたパスがカレントディレクトリ になってますが、これは何処にパスが記憶されてるのでしょうか?
457 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 23:39:56 ] ゲーム作るとしたら 普通はbeginthreadexとかでループさせるもんですか? それともpeekmesseageとかでループさせますか? ゲーム内のオブジェクトとかどうやって管理しますか? クラスをvectorに叩き込んで適当に追加したり削除したりでいいんですか? ネタじゃないです マジレスお願いします
458 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 23:41:45 ] ゲーム製作板がある
459 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 01:50:42 ] 複数のファイル(cpp)を作ると クラスとかの変更があるたびに いちいちexternのほうも修正しなくてはならなくてめんどくさいんですが そこらへんを自動でやってくれる機能はないですか?
460 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 01:51:52 ] 全部ヘッダに書けば。
461 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 01:51:53 ] 2008にMFCはないんですか?
462 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 08:27:22 ] >>457 もうちょっと具体的でないと答えづらいが、beginthreadexでループというのは普通じゃないと思う。 >>459 C++でexternは使わないことが多い。
463 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 10:50:29 ] >>461 Standard以上に付いている。
464 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:21:59 ] >>457 ネタじゃないなら、beginthreadex について調べてからこい。 どんなプログラムかわからんので beginthreadexe をループで と言うのがおかしいかどうかはわからんけど、peekmessage と 同列にしてるのは明らかにおかしいと思う。
465 名前:462 mailto:sage [2008/03/20(木) 12:32:49 ] >>464 うん。そういう意味で書いた。メッセージにつき1スレッドで処理するってことかな。 使ったことないけどユーザーインタフェーススレッドがそんな感じなのかな。
466 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:01:37 ] >>463 もしかしてMFCはいらない子ですか?
467 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:10:59 ] 貧乏人にはいらない
468 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:14:23 ] Expressは試供品だろ
469 名前:デフォルトの名無しさん [2008/03/20(木) 21:32:54 ] >>454 まさかと思うが、1クラス1ファイルなんて妄執に囚われていないだろうな。
470 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:06:12 ] >>469 いやそれは基本だろ…
471 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:12:14 ] >>457 普通にメインスレッドにゲーム用ループ作って そのループの中にメッセージループを処理する関数つくって入れてた ただ、メインスレッドでやると、メニューポップアップ時とかにメッセージループで 処理がとまるから ユーザー操作に関係ないリアルタイム系のゲームを作っている場合などは 気をつけないとはまるかも
472 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:13:21 ] >>457 つまり、peekmessage方式ね
473 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:19:15 ] >>464 別に>>457 はおかしいことは言ってないよ win32プログラムの場合、一般的にはメッセージをgetmessageによるループで処理させるけど ゲームみたいな場合にはメッセージ処理をループではなく局所的に処理させたい場合がある メッセージがない時抜けるためにpeekmessageでメッセージの有無確認を行うというのは良くやる手法
474 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:25:24 ] 間違えた peekmessage使うとメニューポップアップとかではとまらないかも VBのDoEventsはとまったような気がしたが
475 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:29:40 ] ゲーム関係はゲーム板のやつが詳しいだろ
476 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:34:38 ] ためしにpeekmessageを使ってメニューポップアップしてみたらやっぱり止まるね ということで、>>474 は無しでw
477 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:40:02 ] >>475 確かにw 俺もWindowsゲーム作ってたのって もう8年も前だからすっかり忘れてるわ
478 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:19:31 ] >>473 peekmessage に突っ込んでる奴なんていないから、 > 普通はbeginthreadexとかでループさせるもんですか? についての君の意見を聞かせてくれ。
479 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:28:42 ] 478みたいな 俺のほうが正しいと認めるまで論議をやめない みたいな奴がいるとウザイ
480 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:56:00 ] ヘッダってなんで自動で書いてくれないわけ? 全部読み込んでから使わないヘッダを削除して軽くすればいいじゃん
481 名前:473 mailto:sage [2008/03/21(金) 01:25:33 ] >>478 457 の言ってるのは、ゲームループの為に、新しいスレッドを作るか メインスレッドでループさせるのとどっちが良いかという意味でしょ で、beginthreadexについて俺は何を意見すればよいんだ?
482 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:39:13 ] >>480 何が言いたいのかよくわからんがヘッダに何を書くかは自由だぞ? 書くのが面倒ならヘッダなんて作らなきゃいいじゃないか。
483 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:50:33 ] まず標準関数がなんのヘッダ使ってるか調べるのがだるい 使わなくなったら他に使ってないか全コード調べて使ってなかったらゴミだからヘッダ消すのもだるすぎる
484 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 02:21:33 ] めんどくせぇならすべてをincludeしたヘッダでも作れば? include消すのならincludeをコメントアウトしてコンパイルエラーでなけりゃOKとかでいいんじゃね? ってか余分なヘッダーをincludeしたからといって実害は無いと思うぞ?
485 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 03:01:52 ] ほんとだ!なんでいっぱいインクルードしてもプログラムサイズ増えないんだ??
486 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 03:39:45 ] コンパイラは賢いから。 宣言と定義の違い。実態がないもの(宣言)はいくらあったところでプログラムサイズは変わらない。
487 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 07:30:02 ] >>481 >457 の言ってるのは、ゲームループの為に、新しいスレッドを作るか ゲームだとこういうやり方は普通なの? メインスレッドでメッセージループして、重い処理を別スレッドにするのが普通と思うんだけどな。 あと457がこういう意図なのかどうかは不明。自分は457からはそう読み取れない。 464のように解釈した。
488 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:04:35 ] >>485 増えるのはコンパイル時間だけ。 ヘッダの中で変数定義しているのでもない限りプログラムの大きさは増えない。
489 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:39:27 ] >>487 普通かどうかについてはわからない 少なくとも、俺が勤めていたゲーム会社のゲームライブラリはゲームループを メインスレッドに組み込んでいた(ADVだからそれでぜんぜん問題なかった ただ、>>471 で書いたようにメニューポップアップが発生するとイベントループ関数から 戻ってこないような状況もあるから、サブスレッドによるゲームループもありだと思うよ 俺の場合は逆で beginthreadexとpeekmessageを対比しているのでゲームループ処理を行う場所を メインスレッドかサブスレッドどっちすればよいか?と質問していると判断したんだけどね
490 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:25:44 ] ありがとうございます。全ヘッダを書いたヘッダを作ってそれを使うことにしました。
491 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:18:35 ] >>489 サブスレッドでメッセージループする場合、メインスレッドはサブスレッドからの通知を待つの? どうもこの方法の意義が分からないな。 繰り返しになるが、メインスレッドでメッセージループして、時間がかかる処理だけ別スレッドに すればいいしそれが普通と思う。 あとメニューポップアップの表示ではループは止まらんと思う。表示してすぐ次のメッセージを処理すると思う。 止まるのはモーダルダイアログ出す場合とか。 あと質問を489のような解釈をするには「普通はbeginthreadexで作った別スレッドででループさせるもんですか? それともメインスレッドででループさせますか?」じゃなきゃ変だと思う。
492 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:51:01 ] >止まるのはモーダルダイアログ出す場合とか。 ごめん。間違えた。これもメッセージは止まらんわ。処理時間の長い処理を入れなければ。
493 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 22:19:29 ] >>479 だったら、スルーしとけばいいのに。
494 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 23:05:37 ] >>493 見なければいいのに ヌルーすればいいのに 書き込まなければいいのに なんて言うだけ無駄です
495 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 00:46:04 ] 確かに無駄だったな。(w
496 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:05:43 ] VisualStadioをインストールしたのですが、なぜかコンパイルができません。 ちなみに作ったテキストを.cに変換してCソースファイルになるはずなのですが、それも行われません。 しかし、ビルドは行うことが出来ます。 コンパイルの操作を行おうとする時に「拡張子に関連したコンパイルツールがありません」となります。 これは私なりに考えてCソースファイルになってないからだと考えます。 しかし、その根本的な原因がわかりません。 原因は何でしょうか?(長文失礼)
497 名前:デフォルトの名無しさん [2008/03/22(土) 13:09:51 ] Vistaなんじゃねーの
498 名前:デフォルトの名無しさん [2008/03/22(土) 13:27:30 ] 単純に拡張子が表示されていないだけだと思われ。 Vista の Explorer でデフォルトがどういう表示なのかは知らん。
499 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 14:18:50 ] > VisualStadio 釣りか、ネタか、バカだろ。 相手にしないように。
500 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 17:22:43 ] >>499 初心者質問スレでその対応はないだろ
501 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 17:25:18 ] お前が親切に相手してやれ
502 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 17:31:43 ] >500 手本を示せ
503 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:22:16 ] >>491 勘違いしているようだが、メッセージループはメインスレッドでやるんだよ ゲームループと言ってるものは、ゲームを作る場合イベントドリブン方式を使わないで ゲームの進行に関わる処理をループで行う 単純な例では、キー入力->ステート変化->画面表示->キー入力->....こんなループを組む たとえば、キー入力をWM_KEYDOWNのメッセージハンドラーで受けないで GetKeyboardStateとかを使ったりして今のキーの押下状態を取得する どうしてそのようなことをするのかについてはゲーム作成などのHPでも見てもらいたい メニューポップアップに関しては、そのpeekmessageを使ったルーチンを作って実際に試してみてね 質問の仕方が変だというのに関しては確かにそう思う、だけどここは初心者スレだから多少の意訳はしてあげても良いと思った 質問者がすでに消えたようなのでもうこの問題はこれで収めようとおもうんだけど
504 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:24:12 ] とっくに終わってるのに1人で何やってんの?