1 名前:デフォルトの名無しさん [2008/07/31(木) 18:02:28 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
560 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 13:30:31 ] >>556 DCにつながってるデバイスってディスプレイだったりプリンターだったりするじゃない? そういうデバイスを指定しないで作ったDCはビットマップがデバイスなんだよ。 だから自分でビットマップを作りそれをDCに選択してそのDCにTextOutすると そのビットマップに文字が描かれる。 そのビットマップをウィンドウのDCにBitBltすれば画面上で見られるってわけ。
561 名前:デフォルトの名無しさん [2008/09/23(火) 13:42:57 ] visual studio 2008 express を使用しています。 現在あるオープンソースソフトウェアをソースからビルドしようとしているのですが、 ビルドに際し、環境変数が見つからないと言われます。 windowsOSの環境変数は指定されている通り設定しているのですが、エラーが起こります。 確かvisual studio自体にも環境変数を指定する箇所があったと思うのですが、 場所がわかりません。 visual studio自体に環境変数を指定する場所があるならば、 その方法を教えていただきたいです。
562 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 13:49:35 ] すいません。 スレ違いのようですね・・・ 失礼いたしました。
563 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 13:53:25 ] さようなら
564 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:36:04 ] 新規プロジェクト追加時に、自分で設定した値を常に反映させることは可能でしょうか。 具体的には警告レベルを4として、新規プロジェクトが作成されることを望んでいます。
565 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:48:50 ] お使いの製品のグレードあるいはユーザーの知的レベルによって可能
566 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:51:39 ] VS2005EEです。知能は未アカデミックです。
567 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:01:03 ] エンタープライズエディションをばかにするな あやまれ!! みたいな。
568 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:35:19 ] カスタムプロジェクトを使用 マクロで設定 既存のプロジェクトをコピーして使いまわす。 プログラム、スクリプト等で定義ファイルを書き替え VSにパッチを当てて改造する。
569 名前:デフォルトの名無しさん [2008/09/24(水) 15:57:07 ] C/C++室から誘導されて参りました。 VC++2005の使い方を教えてください。質問は以下です。 > 482 :デフォルトの名無しさん [] :2008/09/24(水) 07:57:18 > VC++2005を利用しています > 例外を勉強しているのですが、例外を発生させたときに、 > catchで例外を処理しても、デバッガに例外があったことが出力されます > > catchで例外を処理するときは、 > デバッガの出力に例外が発生したことが出力されるのを防ぎたいですが、どのようにすればいいでしょうか > > 483 :デフォルトの名無しさん [↓] :2008/09/24(水) 12:37:12 > >>482 > 出力って、例外時のデバッガのダイアログ?だったら、デバッグ->例外で設定できる > デバッグ出力の例外のレポートだったら気にするな。レポートが出すぎて困るのだったら例外の使い方が間違っている。 > > 484 :482 [] :2008/09/24(水) 13:18:40 > >>483 > れす、ありがとうございます。後者です。 > > 例外のつかいかたについては勉強していくところです。 > もし、テストケースとかを今後記述するような場合に、デバッグ出力でOFFにできないのか探しています。
570 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 16:12:20 ] リリースビルド
571 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 16:18:03 ] 勉強? その出力で困るやつがいるのか? 遊びじゃないんだからいい加減にしろ
572 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 16:30:52 ] 無料になってから馬鹿が増えたな
573 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 22:37:53 ] >>569 Googleで検索しろ 遊びじゃないんだからそのくらい自分で調べろ
574 名前:553 [2008/09/25(木) 08:33:12 ] >>559 >>560 大変分かりやすい説明ありがとうございました。 やりたかったことが実現できました。
575 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 12:49:58 ] >>569 例外は文字通り例外的なことが起きた場合に使うもので、実行を中断せざるを得ないぐらいの場合にしか使わないほうがいい。 そんな滅多におきないことのためにifをたくさん書くのは面倒だしテストが大変になる。だから例外を使って楽に例外処理を実装する。
576 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 21:16:30 ] class Hoge{ public: Hoge(); virtual void abs_func() = 0; }; class Hoge_1:public Hoge{ public: virtual void abs_func(); }; Hoge::Hoge(){ abs_func(); } void Hoge_1::abs_func(){ } int main(int argc, char* argv[]){ Hoge *p = new Hoge_1; delete p; return 0; } このコード、BCB6では正常ビルドできるけど VC2005では「外部参照 1 が未解決」リンカエラーなる。 何で?コンパイラスイッチで回避可能?
577 名前:デフォルトの名無しさん [2008/09/26(金) 22:18:04 ] 基底クラスのコンストラクタで純粋仮想関数呼んでるから
578 名前:デフォルトの名無しさん [2008/09/27(土) 10:58:32 ] 今までEclipceをずっと使ってたんだけど、C++で開発するにあたり、VisualC++を使ってみた。 これにはEclipceみたいに、コンパイルエラーが出る箇所を赤線で事前に教えてくれたりってのはないの?
579 名前:デフォルトの名無しさん [2008/09/27(土) 11:12:32 ] ないね。
580 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 11:27:05 ] ありがと〜
581 名前:デフォルトの名無しさん [2008/09/27(土) 11:40:47 ] ほのぼのしたスレですね
582 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 13:14:19 ] 文法間違えてると、それ以降のツールチップヒントが出てこない場合がある。 例えば、構造体のメンバだと、 hoge. ここまで書くとメンバ一覧がひょこっとでてくるが、 前に間違いがあると、 a += b: これ間違い。 hoge. ここでヒントが出てこなくなる。
583 名前:デフォルトの名無しさん [2008/09/27(土) 14:30:10 ] VC2005でプログラム(コンソールで動くもの)を作成しています。 コンパイルして実行してみても予期したとおりに動かないのでデバッグで調べた所、 cppファイルのテキストと実行している位置がずれているようです。 ステップオーバーで1行ずつ実行しているのにありえないところで数行飛んだりします。 (代入文が5つ続いてるのをジャンプしたりする) 一つ気になる点はビルド時に LINK : 前回のインクリメンタル リンクで C:\Documents and Settings\管理者\My Documents\Visual Studio 2005\Projects\****\Debug\****.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。 という表示が出ることです。 ソリューションのクリーンを行ってもncbファイルを削除してからリビルドしてもこの表示が出ています。 原因or解決方法ご存知の方、お助けくださいませ。
584 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:34:59 ] Release版をデバッグ実行してね?
585 名前:583 [2008/09/27(土) 14:38:59 ] >>582 素早いレスありがとうございます。 確認しましたが構成はDebugになってます。
586 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:39:39 ] そもそもデバッガなんて使わないほうがいいよ。 printfとfprintfがあればおk
587 名前:583 [2008/09/27(土) 14:39:42 ] ↑は>>582 じゃなくて>>584 です。
588 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:42:31 ] 漢は黙ってmdbg
589 名前:583 mailto:sage [2008/09/27(土) 14:43:31 ] >>586 了解です。 printfで変数を調べてみた所きちんと代入されていることが分かりました。 一つ一つチェックしていくことにします。 回答ありがとうございました。
590 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:43:32 ] 586みたいなのを時代遅れっていうんだろうな
591 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:45:50 ] >>585 つか、Debugビルドの構成が間違ってるんじゃね?
592 名前:583 mailto:sage [2008/09/27(土) 14:52:03 ] >>591 回答ありがとうございます 構成マネージャ-> 構成=Debug プラットフォーム=Win32 ビルド=チェックあり 構成プロパティ->C/C++->全般にある デバッグ情報の形式=C7互換 となってます。 Debugビルドの構成の部分がどこを指すのかイマイチよくわからないのですが
593 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:54:47 ] デバッガに頼るようでは真のプログラマとは言えない
594 名前:583 mailto:sage [2008/09/27(土) 14:56:02 ] >>593 まだ真のプログラマじゃないのでご容赦下さい
595 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 15:06:08 ] 旧バージョンのプロジェクトからアップグレードでもしたのかな? C7互換を /Zi か/ZI にする。 最適化 無効 (/Od) であることを確認する。 変なのが沸いてるけどデバッガにトラウマでもあるのかな(笑
596 名前:583 mailto:sage [2008/09/27(土) 15:12:34 ] >>595 最適化無効によりデバッグ情報と実行位置情報が一致するようになりました。 無事いつもどおりのデバッグができるようになりました。 回答していただいた皆様、どうもありがとうございました
597 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 15:23:25 ] 最適化してたら一致しないのはあたり前だ
598 名前:583 mailto:sage [2008/09/27(土) 15:30:00 ] >>597 すいません。全くもってその通りですね… いつもはデフォルトで最適化が無効になっているのですが 今回はなぜか最適化されてしまっていたので気づきませんでした。
599 名前:デフォルトの名無しさん [2008/09/28(日) 00:30:32 ] Visual C++ と C++ って何が違うんですか><
600 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 00:34:06 ] VC++は商品名。
601 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:01:13 ] C++はプログラミング言語の名前、Visual C++はC++開発のためのソフトウェアの名前
602 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:19:12 ] 開発ソフトの名前に言語名入れるの禁止にしようぜ
603 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 02:27:43 ] むしろ言語名が入ってないほうが困る
604 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 03:34:12 ] Visual C++/CLI でおk
605 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 14:42:10 ] パソコンもプログラミングも初心者ですがインストールで詰まったり(一応)解決できたりしたので報告してみる OS:Vista HomeBasic SP1 はじめ、Visual Studio 2008 SP1 のDVDイメージをダウンロードして焼いてVC++インストール開始。 インストールの途中で、暗転・黒背景白字の英文エラー数秒出て(読めない)OSが落ちて再起動、インストール失敗。 次に書籍付録DVDからVC++2008無印をインストール。一応最後まで成功。 だが前回インストール失敗した残骸(?)が中途半端に残っているのか、登録手続きでキーが表示されなかったり、 ヘルプの参照で壊れている項目があったり、ということが発生。 そこでMicroSoftのアンインストールツールでアンインストール、.NET FRAMEWORK 日本語パックと本体も削除した。 今度はVC++2008SP1をウェブインストール開始。 が.NET FRAMEWORKインストール直後あたりに数秒エラーメッセージが出て(やっぱり読めない)落ちて再起動、失敗。 再びアンインストール作業をして、今度はもうちょっと慎重にやろうと決意。 LAN抜いて、セキュリティソフト(ウイルスバスター2008)を切って、msconfigからMS以外のサービスを停止。 そしてSP1のDVDからインストール開始。 途中Machine Debug Managerを停止せよとの通告が出たので、コンピュータの管理から該当サービス停止。 またHTMLアプリケーションホストも停止せよと言ってきたので、(これっておかしくね?DVDからインスーラ起動する(?)htaのアレだろ? なんで邪魔にすんだよ?とか思ったが)setup.htaのウィンドウを閉じて、再試行。 最後まで進んでコンピュータの再起動。「システムの構成を更新」してるという表示が出て2回ほど再起動。 今度はうまくいったようで、今のところ問題なく hello fuck'n world とかで遊べてます。 すごい迷走だ。バスターのせいだったのかな。
606 名前:605 mailto:sage [2008/09/28(日) 14:50:10 ] Cドライブ直下にインストール作業フォルダっぽいのがいくつも残ってるwww
607 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 17:41:04 ] ここはあなたのメモ張じゃありませんよ
608 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 18:23:28 ] 失敗例と解決しての成功例は貴重なレポートなのでむしろいいぞもっとやれ
609 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 18:41:01 ] ブログにでも買い解け
610 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 18:48:56 ] >>609 はげどう
611 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:26:56 ] インストールだけでこんなにも躓く奴が存在するなんて・・・
612 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:13:31 ] ttp://www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx 最新で無料のバージョンはこれでいいの?
613 名前:デフォルトの名無しさん [2008/09/30(火) 19:59:04 ] VC6で質問です。 CScrollViewクラスのビュー上で、 クライアント領域にBitbltでいくつかのオブジェクトを貼り付けて表示したり動かしたりするプログラムを作っています。 ページが動かないときはそれでいいのですが、スクロールバーを動かしたりしても連動して動いてくれないです。 たとえばBitbltで座標100,100に貼り付けた場合、スクロール有効領域全体の0,0を基点にするわけではなく、 「現在見えている」領域の、100,100の位置に貼り付けられるといった具合です。 OnScrollメソッドで再描画をかけて、GetScrollPosition()の値分、補正して貼り付けてやれば、 スクロールバー連動で位置を動かすことはできたのですが、画面がちらついてしまいます。 スクロールバーと連動して描画したい場合、もっとスマートなやり方はありますか? たとえば、スクロール有効領域全体の0,0を基点にしたデバイスコンテキスト(のようなもの)を取得して、 そこに貼り付けてやればこちらで再描画かけてやらなくても、スクロールによりWindowsが勝手に動かしてくれるイメージで。
614 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:11:36 ] ずらして描画は正しい まずはちらつく原因を特定して、それを抑えよう バッファに描いてそれを転送でもいいし、バックグラウンドの塗り潰しかもしれん スクロールした場合、元の画像はずらしてくれて、 新たな部分だけ無効領域になってるはずだよ
615 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:16:25 ] ってもしかしてOnScrollでInvalidateしてんのか? それは意味ないぞ 全部更新したいなら別だが。 そこはUpdateWindowだけな
616 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:13:48 ] VisualC++ 2005 Express Editionをインストールしようとしたらvs_setup.msを開けませんでした と出てきてインストール出来ませんでした。 ちょっと前には普通にインストール出来てたのですが、何が原因かわからないです。
617 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:21:14 ] 私も分からないです
618 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 21:28:44 ] ハードディスクがお亡くなりになる前兆ですね なむ〜
619 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:22:53 ] >>618 HDの寿命なのか・・・ うわああああああああああああああああああ
620 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:45:34 ] >vs_setup.ms こんなもん始めから無いだろ。 vs_setup.msiじゃないの? これ試してみては。 ttp://support.microsoft.com/default.aspx/kb/833594/ja
621 名前:613 [2008/10/01(水) 14:09:24 ] >>614 ありがとうございます。 バッファとしてのデバイスコンテキストを持つようにする方式を試してみました。 CreateCompatibleBitmapでビューのDCと互換のでDCをクリエイトするようにしたところ、 ディスプレイ解像度を超える部分には書き込まれないようです。 (ディスプレイ解像度を大きく超える広さの領域をバーでスクロール表示したい) ディスプレイに影響されない、独自の形式(解像度)のDCを作る方法がありましたら、教えてください。 CreateCompatibleBitmapではなく、 CreateDCで独自の形式(解像度)のDCを定義することを考えていますが、 このメソッドの使い方(引数の指定方法)がよく分かりません。 ウェブの資料にあった、 bufDC.CreateDC("DISPLAY", 0, 0, 0); とすると、書き込んだ時点で全画面モードになってしまう予想外の動きが・・・
622 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 15:01:03 ] そりゃディスプレイのDC持ってくりゃそうなるだろ。 いったいどうやってんの? Bitmap作るのに大きさ指定できるでしょ? GetClientRect(&rect); CPoint pos = GetScrollPosition(); (略) pDC->BitBlt(pos.x, pos.y, rect.Width(), rect.Height(), &dc, pos.x, pos.y, SRCCOPY); こんな感じでやってる? 面倒だからとりあえず、 pDC->BitBlt(0, 0, bitmap.Width, bitmap.Height(), &dc, 0, 0, SRCCOPY); で試してみては?
623 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 15:32:08 ] ところでbitbltの読み方はビットブリットでいいのかな ビットブルト?ビットブロット?
624 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 16:06:19 ] ビットブリットと言っているなあ
625 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 16:06:54 ] 自分はビットブリットだと思ってるけど 周りのみんなはビットビルトって言ってる
626 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 17:11:16 ] >>620 vs_setup.msiでした 無事インストール出来ました。ありがとうございます
627 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 18:42:06 ] >>622 ありがとうございます。 ディスプレイ解像度うんぬんは的外れで、CBitmapのCreateBitmapのところで必要な解像度指定すればうまくいきました。 もうひとつ質問です。 VC6で、DrawTextで貼り付けるテキストを、サイズ指定したりフォントや色を変えたりできますか? MFC見ているとVC2003以降はDrawTextExってのがあるみたいですが、6でそのようなことをする方法あったら教えてください
628 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 18:50:05 ] えーと、、、、それは基本中の基本だと思うんだが。 フォント作ってDCに選択して書くだけだろ。 色はペンやブラシを替えればいいし、GDI関連一通り実験してくれ。
629 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 18:50:29 ] DrawTextExはVC6にもある
630 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 21:52:49 ] 俺はビットビーエルテーって読んでる。
631 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:15:45 ] C++って何て読むのー?しーぷらすぷらす?
632 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:17:59 ] ttp://wikipedia.org/wiki/C++
633 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:18:09 ] シータスタス
634 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:53:07 ] 吹いた
635 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 23:14:48 ] 質問です。 今、自作のゲームソフトを作っているのですが、 プログラムでどのぐらいメモリが使われてるか見てみようと思って Windows タスクマネージャでメモリ使用量を眺めていた所です。 どうも、ファイル読み込みがあるたびにメモリ使用量が増えていき ある程度の数字を超えると使用量の増加がやむ、というような感じみたいなのです。 mallocやnewで確保したメモリが開放されていないのかな?と思いましたが、 何度見直しても開放処理を行っています。 これってひょっとしてXPのシステムキャッシュというのが プロセスのメモリ使用量として加算されてるという解釈であっていますでしょうか? また、ゲームを公開するにあたって動作環境の表記は必要だと思いますが、 このようにプログラマの意図しない所でメモリが消費されているとすると、 プロセスが実際に使う最大メモリ使用量というのはどのように割り出せばいいのでしょうか?
636 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 23:19:22 ] メモリのほうは判らんが、 動作環境なら、自分の動かしてる環境書いて、「これ以上のスペックなら問題ないでしょう」でいいんじゃない?
637 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:11:42 ] >635 基本的に「メモリ使用量」(専門的にはワーキングセットという)は OSがプロセスに割り当てた物理メモリの量。 プログラムがまたアロケートしたときに 割り当てのための余計なコストが増えないよう 物理メモリを確保したままでとどまる。 プロセスがバックグラウンドに移されたり、 他のプロセスがメモリを要求したりした時点で 初めてワーキングセットが減らされる。 ちなみに実際にプロセスが使っているメモリの量を知りたければ 「仮想メモリサイズ」を得る必要がある。
638 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:23:31 ] >>636-637 レスありがとうございます。 >>636 確かにそれでもいいのかも知れませんが、Windowsアプリになれたプロの人なんかは、 そのソフトに必要なメモリをどのように決めているのかと思いまして。 >>637 >プログラムがまたアロケートしたときに >割り当てのための余計なコストが増えないよう >物理メモリを確保したままでとどまる。 ということは、メモリ割り当ての問題であってファイル読み込みとは無関係なのですか? 音声のファイルを読み込んだりしたときに、ディスクアクセスしてないように見えるのですが
639 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:33:47 ] そりゃ以前読み込んだ音声ファイルのデータがキャッシュに残ってたんだわ。 ちなみにシステムやプログラムが使ってない物理メモリは 全部ディスクキャッシュとして使われる。
640 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 02:30:24 ] なるほど。ファイル読み込みのキャッシュはプロセスのメモリ使用量とは また別として確保されるのですね。 仮想メモリサイズを取得するというのはGlobalMemoryStatus()でしょうか? これってプロセス単体の使用量を調べられましたっけ? それとも、他にプロセスの仮想メモリサイズを調べるための関数がありますか?
641 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:14:10 ] GUIアプリとコンソールアプリの共存って出来ますか? 例えば、物理シミュレーションの映像をDirectXやopenGLでウィンドウ表示しつつ、 演算結果はコンソールで表示し続けるみたいなことです。 プロジェクトを作るときに、コンソールとwin32アプリの2択しかないので、 そういうことは出来ないのでしょうか…
642 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:15:59 ] コンソールプログラムからCreateWindow関数を呼ぶとできます。
643 名前:641 mailto:sage [2008/10/02(木) 11:39:08 ] >>642 ありがとうございます。
644 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:18:40 ] そんなに簡単に呼べたっけ? ライブラリとインクルード用意すれば呼べそうな気もするけど、 mainとwinmainで全然作りが違う気がする
645 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:25:00 ] 一つのプロジェクトの中には、一つのmain関数しか定義できないのですか? だとすると、directxなどのライブラリを用いるサンプルソースを試すにはその 都度、プロジェクトを作成しなといけないと思うのですが、ソリューション内の プロジェクト全てに同じインクルードパスとライブラリパスを適用するような ことは出来ますか?
646 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:41:45 ] パスの設定はVC++そのものの設定でやればいいだろう。 lib指定が面倒だったらヘッダーに#pragma comment入れとけばいいし
647 名前:645 mailto:sage [2008/10/02(木) 13:02:32 ] >>646 ありがとうございます。 #pragmaはコンパイラによって挙動が違ったような気がするので 見送りかな。linuxでもコンパイル出来るようにしときたいので。
648 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:13:28 ] >>647 LinuxではDirectX使えないよ そもそもここはVisualC++のばりばり環境依存のスレです
649 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:28:45 ] >>644 #include <windows.h> int main(void) { HWND myWindow = CreateWindow( TEXT("STATIC"), TEXT("hogehoge"), WS_OVERLAPPED, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL ); ShowWindow(myWindow, SW_SHOW); MessageBox(NULL,TEXT("ok"),TEXT("close"),MB_OK); return 0; }
650 名前:640 mailto:sage [2008/10/02(木) 13:40:43 ] 一応自分なりに調べてみてGetProcessMemoryInfo()という関数があるのがわかりました。 プロセス終了時に取得したPROCESS_MEMORY_COUNTERS構造体のメンバのうち、 PeakWorkingSetSize と PeakPagefileUsage の合計値が プロセスで実際に使われた最大メモリ使用量という事でいいのでしょうか? というか、ゲームに使われる全てのファイルサイズの合計超えてます^^; こういうものなのでしょうか?プロの人は本当にどうしてるのか気になります。 一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね?
651 名前:647 mailto:sage [2008/10/02(木) 13:45:51 ] >>648 directxはあくまで例で言っただけで、openGL使うと思います。 混乱させてすみませんでした。
652 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:46:00 ] テストプログラム作って実測だろうが 机上で計算しても何の意味もない
653 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 13:59:01 ] lib指定のpragmaはcomment文なので、他には影響なさそうだけどね。
654 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:00:34 ] >>641 は入門用にglutから入ればそんな心配も出てこなかったろうに。
655 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:01:06 ] >>652 >>650 は実測はしてはみたけどそれが正しい方法なのか知りたいって事でしょ 俺もメモリ関係よくわからんから知りたいわ
656 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:05:12 ] >一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね? こんなこと言うくらいだから知ったかぶりして余計な心配してるだけだろ
657 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:05:17 ] GUIって「ぐい」ってよみますよね。 無知な後輩から馬鹿にされたんですが。師ねよ。
658 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:06:53 ] >>656 Windowsはともかく、家庭用ゲームの開発だと大抵はそういう手法とってるよ Windowsのメモリ管理なんてまともにやってるゲーム会社なんてないんじゃね?
659 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:06:57 ] 自動で付けられるコードの「 { 」を次の行にする設定ってあるんでしょうか?
660 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:10:17 ] >>659 C言語で { を勝手に改行されたら逆に困りますよ