1 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 17:44:23 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
656 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:20:39 ] Microsoft Visual C++ 2008 Express Edition をインストールしたのですが、 コマンドラインからコンパイルできません。 clと入力しても 'cl' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と言われてしまいます。 どうすればコマンドラインからコンパイル出来るようになるでしょうか?
657 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:24:16 ] >>656 msdn.microsoft.com/ja-jp/library/ms235639 (VS.80).aspx
658 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:25:55 ] >>656 >>657 2005→2008に読み替え
659 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:31:29 ] ありがとうございます。 普通のコマンドプロンプトからは出来ないのでしょうか? g++と同じ感覚で使えると便利だと思っているのですが。
660 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:44:18 ] パス通せばできるだろ
661 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:58:20 ] VCVARS32 入ってないのか
662 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:01:11 ] VCVARS32というバッチファイルでコンパイルするんですか?
663 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:07:23 ] 少しは自分で調べたらどうだ? VCVARS32 でググりゃいくらでもでてくるだろ。
664 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:34:40 ] もちろん調べたんですが分かりませんでした。 確かにいくらでも出てきましたが 実行しても何もおこりません。
665 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:38:59 ] VCVARS32を実行したら、そのコマンドプロンプトではそれ以降clが使えるようになるよ・・・
666 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:51:42 ] ・・・もしかしてOSを再起動してないからclが使えないのでしょうか。 今度OSを再起動できるようになったら試してみます。 ありがとうございます。
667 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:12:09 ] >>665 見て俺も実行してみた が、アクセサリのほうのcmdからはclは使えなんだ
668 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:23:52 ] >>667 ちゃんとCALLしたのか?
669 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:25:55 ] >>667 「そのコマンドプロンプトで」って >>665 に書いてあるだろ? アクセサリのコマンドプロンプトで VCVARS32 を実行しなきゃ、アクセサリのコマンドプロンプトでは使えんよ。
670 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:43:39 ] 初めてやったが問題なく使えた、edlin があるのに驚いた
671 名前:667 mailto:sage [2009/05/23(土) 22:23:52 ] あ、出来た
672 名前:666 mailto:sage [2009/05/23(土) 23:23:52 ] できました! ありがとうございました。
673 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:55:55 ] システムの環境変数に登録しとけば? てか、VC6の頃は自動で登録してくれたのになぁ
674 名前:デフォルトの名無しさん [2009/05/24(日) 10:51:09 ] 現在、Minimalist PSPSDKを導入し、 IDEとして、Visual C++を使用したいんですが、 どうもうまくいかない状況です。。 1>Project : error PRJ0019: ツールはエラー コードを返しました : "メイクファイル プロジェクト動作を実行しています。" sourceforge.jp/projects/dxlibp/wiki/ チュートリアル のやり方で、Makefileも作成しています。それに加え、 インクルードの検索パスに C:\pspsdk\psp\sdk\include を設定し、 環境変数のPATHに C:\pspsdk\bin としています。 ほかに何か不備があるのでしょうか? よろしくお願いします。
675 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:06:36 ] なぜそのwikiで質問しない? ここはそのサイトと関係ないだろ
676 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:10:21 ] >>675 頭がパーだからに決まってるだろw
677 名前:デフォルトの名無しさん [2009/05/24(日) 12:53:20 ] >>675 すみませんでした。。 そちらのお世話になってきます。
678 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:20:46 ] VisualStudio2005でMFCアプリをつくろうとしています。 それでコマンドライン引き数をプログラムに渡したいのですが、 スケルトンのままでビルドしてコマンドラインから、 ttt>hogehoge.exe test1(ret) と実行すると、test1というファイルをさがしに行ってしまい、 ファイルが見つからないというメッセージを出して終了してしまいます。 普通にコマンドラインを渡すにはどこをいじればいいのでしょうか?
679 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:28:30 ] CCommandLineInfo::ParseParam(); msdn.microsoft.com/ja-jp/library/bss6bxss (VS.80).aspx
680 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:57:25 ] その文章だと本人の思い込みの可能性が強く感じられるから アドバイスは遠慮する。
681 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:33:15 ] ___arg アンダーバーのついたargとかいうもんがあった希ガス
682 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:36:13 ] ヘルプのdocument explorerの文字を大きくするにはどうすればいいのですか? 初心者過ぎる質問ですがよろしくお願いします。
683 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:52:24 ] 「ヘルプに関するヘルプ (Microsoft Document Explorer ヘルプ)」を読め。
684 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:56:49 ] >>682 表示メニューか右クリックメニュー
685 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:07:54 ] 683の言われたとおりにヘルプからで探したところ、 インターネットオプションで「WEBページのフォントサイズを使用しない」を選択すればよいことがわかりました。 ありがとうございます。 >>684 オンラインのページだと、文字のサイズを変えても、ページ内の文字の大きさが変わりませんでした。
686 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:09:54 ] >>679 CCommandLineInfoでぐぐったら何とかなりました。Thxです。 >>681 それ以前にまったくアプリが立ち上がらなかったので。
687 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:23:45 ] アプリか 自分もいつか作ってみたいもんだね
688 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:50:48 ] >>686 ドキュメント/ビュー アーキテクチャを無理に使う必要はないんだぞ。:-)
689 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:59:35 ] >>688 ドキュメントビューアーキテクチャって何を作って欲しいのか不明だよね
690 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 11:16:32 ] >何を作って欲しいのか不明 それは君の経験不足だと思うが。
691 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:38:21 ] 最近VisualC++を使い始めたのですが、ソフトの特性を理解できていなくて困っているので一つ質問させてください。 main関数を含む単独のcppプログラムを2つ並行して使っているのですが、 それぞれ1つずつのVC++ウィンドウを開いて、それぞれにソリューションを表示してコンパイル(ビルド?デバッグ?)しています。 この2つを1つのウィンドウで開き、タブを切り替えてそれぞれ個別にコンパイルできるような構成にはできないでしょうか? 1つのソリューションに2つのプロジェクトを作って1つずつソースファイルを入れてCtrl+F5を押しても片方のソースだけが実行されてしまって悩んでいます。
692 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:19:32 ] Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をインストールしたいんだけど、インストーラーでドライブ直下に展開されちゃう。 どなたか保存場所の指定の仕方わかります?
693 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:26:33 ] >>691 後者の状況で、ソリューションエクスプローラ上のプロジェクトのアイコンを右クリック、 メニューの中の「スタートアッププロジェクトに設定」を選ぶと、 Ctrl+F5などを押したときに起動するのがそっちになる。 あと、ソリューションのプロパティで両方同時になどといった設定もできる。 頻繁に切り替えることを考えた作りに見えないし、 望みどおりになるのは難しいと思う。 本質的に別のなら、最初みたいに別々のソリューションにするほうがいいと思う。
694 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:16:43 ] クラスを使ってゲーム作成などをし始めたのですが、作ってるうちにこんがらがってしまいます 配列はとても扱いやすくいので何もかも配列で処理させれば問題なく出来るんですが、 こういう場合はどうすればいいんでしょうか 無理してクラスは使わなくていいんでしょうか?それとも僕はC++に向いてないんでしょうか?
695 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:52:06 ] >>694 その配列に処理するための関数がくっついていれば便利だと思うことはないかね?
696 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:58:05 ] >>694 たくさん作ればそのうちわかる
697 名前:694 mailto:sage [2009/05/25(月) 23:03:34 ] ありがとうございます! >>695 説明では何度も読んでいるんですが、どうしても使いこなせないんですよね。多分理解できてないんでしょう・・ 計算はmain関数、データは配列に格納って固定概念がいつまでも離れないんです >>696 ありがとうございます。とりあえずあまり考えずに何か色々作ってみます。 その内なにかひらめくかもしれませんね
698 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:09:24 ] プログラミングのノウハウ、作り方や設計等、デザインパターンもそう。 本だけの知識で修得できるものじゃない、体で覚える方が大切。
699 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:48:19 ] 判るなぁ、その気持ち 大きいのと小さいのは判るんだけど、それを使って何かやろうとすると ウゼーと思ってオブジェクト化崩しちゃう 最後まで設計するのが面倒でコーディングに走っちゃうのが 駄目なんだろうな
700 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:26:35 ] この人はグローバル変数やめるところから始めるべきだ
701 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 13:04:20 ] 質問です。 開発環境はVisual C++2005です。 静止画を連続表示してGIFアニメのように見せるソフトを考えています。 今、連続画像AとBがあって、同時に再生スタートして、 ずれないように毎画像(毎フレーム)ごとにお互いの同期を取りながら再生させるには、 どのようにすればよいでしょうか? よろしくお願いします。
702 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 15:18:17 ] >>701 すれ違いではあるまいか。 答えは、同期なんかとらなくても、同じスレッドで表示すればいいだけだろ。
703 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:33:33 ] >>701 ギャハハハw ダッセーw 以下、>>701 の発言を正当化する後付け設定の嵐どぞ↓w
704 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:46:28 ] ┌┐ / // [二 ] __ 〔/ / | |/,ー-、ヽ / / / _,,| | ./ レ1 | / o └、 ∠/ ∧_∧ .|__| ヽ_/^ ,/ ( ´∀`) )) __ / /つ( ̄`ヽO_ノ⌒ヽ [二二_ ] / ノ ) \ )) // {.. (__丿\ヽ :: ノ:::: ) / ∠__  ̄フ.. 丿 ,:' )) ∠___ / / (( (___,,.;:-−''"´``'‐' _ / / \ / o ヽ/ / / ヽ__ / \
705 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:59:51 ] VC++2008 MFCダイアログベースでアプリを作成しているのですが ダイアログにファイルをドロップした時に、 ダイアログ上に設置されたリストコントロール上にドロップされたのと、 それ以外のダイアログ上の場所にドロップされたのとで別の処理をしたいのですが、 どう判別したらいいのかわかりません。 教えてください。 よろしくお願いします。
706 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:12:35 ] ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。 リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。 むろん、ダイアログもリストコントロールも Accept Files を True にしておく。 [別解] ダイアログだけ Accept Files を True にしておき、ドロップされた時のマウス位置で判別する。
707 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:19:41 ] 最近プログラムの流れをノートに書いてるんですが、 こういう流れの図ってなんていうんでしたっけ?
708 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:21:03 ] フローチャート
709 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:22:28 ] \  ̄ヽ、 _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ `'ー '´ ,. -- 、 ○ ,' , '⌒,ノ O .__ i/ ´ o ,,.. '"´ ̄ (__)r'ヽ と 。 / ` ´`ヽ 思 ,' ,、 ─- ', う ! 、 ,.i- i ハi,;-ァ!、 i i 神 i i i !,-;!、 ':,_rハiノ| .| .綺 レV!. i.ハ_r! 、 "" i |. | で i.八" _ ノ |. | あ l.|ゝ.>,,、__,,.. イノ レハ | っ レ| l | ,.イ-ーニノト.ー 、i | た .| l ,.ヘ、ニ_ノノ `ヽ! | / //不\ヽ `ヽ
710 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:34:16 ] >706 回答ありがとうございます。 >ダイアログにファイルをドロップした時→ダイアログにWM_DROPFILESがポストされる。 こちらはOKですが、 >リストコントロールにファイルをドロップした時→リストコントロールにWM_DROPFILESがポストされる。 こちらの場合の処理手順がわからないのでマウス位置判別の方法で試してみます。 どうもありがとうございました。
711 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:50:52 ] >こちらの場合の処理手順がわからない CListCtrl の派生クラスを作成して当該リストコントロールに結びつけ、 その派生クラスでWM_DROPFILESメッセージを処理する。
712 名前:710 mailto:sage [2009/05/26(火) 23:13:35 ] >711 試行錯誤しながら試したらうまくいきました。 ありがとうございました。
713 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 23:39:01 ] デバッグ中にステップインでプログラムを進めているのですが、いつの間にか終わってしまいます 「何かキーを入力してください」の画面も出ません ウォッチ式のところも文字がグレーになってしまいます ループのところでハマっているかとも思いましたが、そういうわけでもありませんでした これはどういう状態なのでしょうか?
714 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:22:58 ] 出力ウィンドウには何か出てない?
715 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:26:06 ] リリースビルドだったら許さん
716 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:35:47 ] アクセスバイオレーションで続行して飛んでるとか オブジェクト残ってて実は終わってないとか
717 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 17:26:40 ] 猫でもわかるプログラミングさんのサイトを使っていたんですが、 WindowsSDKのプログラムを打ちこんだのですがVisual C++ 2008 EEではビルド出来なくて困っています Visual C++ 2008 EEのアプリケーション開発入門用のサイトで お勧めなのはありませんか?
718 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:19:08 ] ビルドできないってどんな理由で? ユニコード文字セットのせいじゃないの?
719 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:32:09 ] ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htmのコードをそのままコピペして使いました そしてビルドしたところ以下のようなエラーメッセージが出ました sample01.cpp(38) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 この他に二つエラーが出ましたが、 そちらは型変更のキャストを入れています
720 名前:717 mailto:sage [2009/05/28(木) 18:38:56 ] すみません、>>719 は>>718 の返答ですorz
721 名前:デフォルトの名無しさん [2009/05/28(木) 18:42:55 ] >>719 まさに>>718 マルチバイトとUNICODEが混在してる。 プロジェクトのプロパティと使用してる文字セットを見直して。
722 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:57:36 ] >>721 助かりました Unicodeからマルチバイトに変更したら問題なく通りました 半日悩んでたので、ようやくすっきり出来ましたw
723 名前:デフォルトの名無しさん [2009/05/29(金) 02:03:34 ] mfcの求人がないお(;ω;) mFCこそしきょくの現代プログラミングだとおもうんだお(^ω^)
724 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 02:17:42 ] >>723 あー、わかる ホント仕事ないよなぁ・・・ っていうか別にこれに限らずプログラム組む仕事ならちょっとなれれば なんでもできるからどこへでもまわしてくれって思うけどね
725 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:04:27 ] MFCの求人がないお というレスに対してのレスとしてそれは正しいのか? 仕事がないおじゃなくてMFCの求人がないおだぞ 的外れにもほどがあるお
726 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:17:32 ] Webじゃ作れない業務に強くなるしか無いんじゃない? ムスレの話題じゃないなw
727 名前:デフォルトの名無しさん [2009/05/29(金) 16:36:55 ] ここで質問すべきなのか分かりませんが。 8FFFFFFFU と 1U では _BitScanForwardした結果を返すスピードは 変わらないのでしょうか? 上位のほうにあろうと下位のほうにあろうと関係ないのでしょうか。
728 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:52:55 ] 自分で試しても違いがわからなかったら変わらないと言える。
729 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:53:31 ] >>727 homepage1.nifty.com/herumi/diary/0811.html のページによると_BitScanForwardはアセンブラレベルでは bsfの1命令に落ちるみたいなので、変わらないんじゃないの 確実な答えがしりたいなら人に聞くんじゃなくて、Intelのサイトとかで 対象CPUの命令のスペックを調べること
730 名前:デフォルトの名無しさん [2009/05/29(金) 19:51:56 ] 今、学校の課題をやっているところなのですが、 「関数 'erfc' は定義されていません。」と出てしまいました。 erfc()はmath.hのエラー関数の関数で、 ぐぐったところ、標準ライブラリ(拡張)と出てきました。 どうすればいいでしょうか。お願いします。
731 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:20:17 ] なんだ、まだ解決してないのか 先生に聞いてみな
732 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 20:44:58 ] >>725 ないのはしょうがねぇじゃんw でもそれ以外不可ってのが俺的にネックだなぁ・・・ って感じでレス書いてる内に俺の都合レスになったw
733 名前:デフォルトの名無しさん [2009/05/29(金) 20:58:57 ] >729 1命令で収まりそうですね。 ビットを探すためにループ処理はしていませんね。 ありがとうございました。
734 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:38:59 ] >>724 畑違いだとめっちゃしんどいぞ。
735 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:40:12 ] >>734 っていっても俺はじめゲーPGだしw
736 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:33:07 ] 関数を作ると、 関数に 2 個の引数を指定できません。 と出るんですが、どうすればいいでしょうか
737 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:00:51 ] 関数プロトタイプを見直せ。
738 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:01:23 ] それは作ったほうじゃなくて呼び出したほうのエラー 具体的にどうやったのか?
739 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:49:23 ] >>737 ,>>738 分かりました、ありがとうございます いままで関数のほうばかり見て、 関数プロトタイプの括弧の中を記述し忘れていました
740 名前:デフォルトの名無しさん [2009/05/30(土) 20:01:17 ] さっきVisual C++ 2008 Express Edition をインスコしたとこで、とりあえず簡単なプログラム実行させようとしたんだけど、 include ファイルを開けません。'iostream.h': No such file or directory って出てコンパイル通らんという状態なんだが Cygnusでは実行できたからソースコードが悪いわけではないと思うんだが・・・ それとも新規プロジェクトはWin32コンソールアプリケーションじゃあ駄目だったのか?
741 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:08 ] インクルードパスに追加すればいいだけでは?
742 名前:740 [2009/05/30(土) 20:16:25 ] #include <iostream.h>は#include <iostream>にしたらエラー吐かなくなった。 なんか新しい書式だと.hを付けないから古いほうだとエラーになるとかなんとか…? でも俺らの参照する文献(ネット上も含めて)には旧バージョンもまだまだあるだろ…迷惑な でも#include <iomanip.h>のほうはエラー吐き続けるんだが・・・
743 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:32:56 ] #include <iomanip>
744 名前:デフォルトの名無しさん [2009/05/30(土) 20:48:24 ] すみません。書籍スレと迷ったんですが、こっちで聞かせてください。 大分、MFCにもなれ、自作アプリを3個くらい手の込んだのを作りました。ある程度のアプリなら ネットやら書籍で検索しながら作れるような気はしてます。 書籍もオークションやらブックオフで色々あさって技術評論社とかAsCIIのを 12冊くらい持ってます。で、色々お勧め本をみるとハーバートシルトのMFC6.0という分厚いやつがお勧めらしいですが 本屋でぱっと見た限りほとんど知ってる事だと感じました。実際読んでないんでわかりませんが、 それでも含蓄あるから買ったほうがいいとか そういうことありますか?
745 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:00:59 ] 人それぞれだと思うよ。 もっとも、趣味範囲でのプログラミングなら、参考書に載っていない部分を、工夫しながら作っていくのが面白いのだけどな。
746 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:13:51 ] 他に持ってる本で用が足りてれば買ってもしょうがないだろうけど そんなの全部内容比較しなきゃ誰にもわからんだろ
747 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:45:45 ] プログラミングに限らず大抵の分野について初心者用の本ばかりなんじゃないの。 中級向けの本なんて作るの大変なうえに売れないし、作る人いないんじゃないかな。 雑誌でちょっとずつ高度な話を連載して書籍化ってパターンがあるけど雑誌が売れなくて消えてく時代だし。
748 名前:デフォルトの名無しさん [2009/06/03(水) 00:07:40 ] すいません。教えてください。 #include <string> #include <iostream> using namespace std; class User { private: public: User() { cout << "デフォコン" << endl; } }; int main() { User x; User y(); return 0; } User y();でデフォルトコンストラクタが呼ばれないのは何でですか?
749 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:16:32 ] >>748 User型の戻り値を持つ関数yのプロトタイプ宣言とみなされてるとか
750 名前:デフォルトの名無しさん [2009/06/03(水) 00:25:40 ] >>749 ありがとうございます cout << typeid(x).name() << endl; cout << typeid(y).name() << endl; してみたら、さらに納得がいきました。 てか、よんでる入門書にそういう記述があったので・・・ 本の正誤表に出てるかもしれないですね。 ありがとうございました
751 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 00:40:11 ] >>750 てか、このパターンはぱっと見関数宣言と変数定義の区別が つかないような気がするのでコンパイラによっては(VCでもバージョンによっては) 動作が異なるのかも知れない C++相談室スレとかにいけば、どう解釈するのか正しいのか教えてもらえるかも
752 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:10:44 ] Visual Studio 2008付属のVisual C++で、ダイロアグベースのMFCアプリケーションを 作り始めてみました。 エディットコントロールの使い方について教えてください。 エディットコントロールの使い方として、 ・変数の追加で、カテゴリControlの変数を追加する。 →GetWindowText()で内容を取得する。 ・同様にカテゴリValueの変数を追加する。 →UpdateData()で変数を更新して内容を取得する。 ・変数を追加しない。 →GetDlgItem()とGetWindowText()を使って内容を取得する。 このようにいくつか方法があると思っています。 それぞれの方法の長所や短所、使い分ける時の基準、みたいなものはありますか?
753 名前:750 [2009/06/03(水) 01:18:26 ] www.geocities.jp/bleis_tift/cpp/defaultctor.html こんなの見つけました。 コンパイラによっては警告を出してくれんですね ちなみに私が使ってたのはVC++ 2008です ありがとうござました いろいろ氷解しました
754 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:26:20 ] >>753 リンク先にもあるようにVisual C++は警告を出すコンパイラなんだけど気付かなかった? そうなら、警告もエラーと同じくらいよく目を通したほうがいいよ。
755 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 06:18:35 ] >752 数値の場合はDDX DDVが便利。 ただ複雑なことはできないのとUpdateDataが面倒 文字の場合は直にGetWindowTextが手っ取り早い 毎回GetDlgItemが面倒ならメンバ変数にしておく。 あとCEditのメンバ関数と使い分け
756 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 06:21:25 ] と思ったけどDDX DDVの中味を自作する方法もあったな
757 名前:デフォルトの名無しさん [2009/06/03(水) 19:24:40 ] 入門書を一通り読み終えて 簡単なアプリを作りながらVisualC++の使い方を覚える本をはじめたのですが 最初の方で String^ msg = now.ToString(); という記述が出てきました。 この^は見た覚えがないのですがなんか演算子なのですか? 今この書き込みかいててちょっと思いついたんですけど もしかしてクラス名が String^ ってことはないですよね?
758 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:39:37 ] それは、C++のようでC++でない.NET用の拡張C++/CLIの構文。
759 名前:757 [2009/06/03(水) 19:41:40 ] ありがとうございます。 すいません。取り除いてコンパイルしてエラー文検索で見つけました。 msdn.microsoft.com/ja-jp/library/ms235261 (VS.80).aspx ですね。
760 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:51:48 ] どっちみちC++とは違うものだし、.netがやりたいなら普通はC#にする。
761 名前:デフォルトの名無しさん [2009/06/03(水) 20:08:17 ] satou
762 名前:757 [2009/06/03(水) 20:51:42 ] >>760 C++を選んだのはオブジェクト指向でネイティブアプリが作りたかったんですけど CLIはネイティブじゃないんですよね。 C++でwindowsのネイティブアプリを作るとなるとVisual Studio 2008 Standard Editionあたりを買って MFCで作るのですか? そもそも見た目をグラフィカルに配置して、モデル部分やボタンなどのアクションをC++で書くというのを イメージしてたのですが、製品版買えば、MFCアプリをフォームエディタでのようにペタペタはって 作れるのですか? アマゾンでC++ MFCを検索すると2003年から新刊出てないようなのでMFCってもういまさらって感じですか? 何かをプラスでインストールしないと動かないアプリっていうのがいやなんですよね。 いろいろ聞いてすいません・・
763 名前:757 [2009/06/03(水) 21:12:16 ] なんか色々あってややこしいですね・・・ いろいろ見てみたけど 勉強するならWin32APIですかね?
764 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:13:51 ] とりあえずネイティブは無料版でも扱える(MFCは有料のみ) 俺的考えはビスタ以降は標準で.NETがインストールされてるからそこまで嫌う必要はないと思ってる
765 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:25:55 ] 757はなにをやりたいのかさっぱり分からん 例えばゲーム作りたいならC++とネイティブとDX、 ブラウザとかのツール系なら.NETのほうが開発しやすいし、 win系OS全部に対応させたいならWin32APIのみで開発するし 目的によって勉強する言語は変わってくるんだがなー
766 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:25:24 ] mfc使ってみようと思う時はribbon触りたくなった時くらい
767 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:06:10 ] そのリボンもWindows 7からWin32 APIの仲間入り。
768 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:41:00 ] ループを抜け出すときにはbreakを使いますが、これを自分で手定義した関数から実行することは出来ますか? void aaa() { break ;} int main(){ for(int i=0;i++;i>5) { aaa() ;} return 0;} のような感じです
769 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:44:04 ] 不可。
770 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:52:55 ] >>769 ありがとうございます
771 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:39:32 ] VC++2005でCStringを使おうとすると以下のエラーが出てしまいます。 何か設定など必要なのでしょうか? error C2065: 'CString' : 定義されていない識別子です。
772 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:48:17 ] #include <tchar.h> #include <atlstr.h>
773 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 01:01:37 ] >>771 VC++2005eeじゃね? 有料版じゃないとMFCは使えないよ
774 名前:771 mailto:sage [2009/06/04(木) 04:55:54 ] >>772 様 >>773 様 御回答ありがとうございます。 VC++2005eeにて文字列変数のコピーをするにはどうしたらよいのでしょうか?
775 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 07:11:09 ] lstrcpy
776 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 07:28:37 ] 文字列変数というのがchar*なら>>775 #include <string>してstd::string使うとか。 C++/CLIならSystem::Stringもあるけどまあ別物か
777 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 08:11:08 ] もしかして標準C/C++の基本がまだできてないなら C/C++スレへ行け
778 名前:757 [2009/06/04(木) 11:55:50 ] >>764 C++と.NETだとC++のランタイムがスタティックリンクができないので .NETが入ってたとしてもC++のランタイムのインストールが必要って聞いたんですけど そんなことないですか? プロジェクトのプロパティでランタイムライブラリを マルチスレッド デバッグ (/MTd) に変えてリビルドしたら コマンド ライン error D8016 : コマンド ライン オプション '/MTd' と '/clr:pure' は同時に指定できません。 と言われました。 マルチスレッド デバッグ (/MT)でも同じ感じです。 >>765 作りたいのは「ブラウザとかのツール系」です。 .NETなのかな〜 まあ、両方ザックリ本読んで考えて見ます。
779 名前:デフォルトの名無しさん [2009/06/04(木) 13:44:07 ] RPGゲームを作っています main関数の中でとりあえず作ってみたのですが、 これをそのままクラスにするいい方法はありますか? コード自体はたいした量ではないので、作り直すのは簡単なのですが 後学のためにも教えてください。 それとも戦闘画面をメインにし、フィールドを歩くときは別フォームを呼び出したりするほうが良いでしょうか
780 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 14:11:49 ] 地道に作り直せ
781 名前:デフォルトの名無しさん [2009/06/04(木) 14:29:42 ] VS2003で作成されたActiveXコントロールの更改をしているのですが、 最適化オプションが、 ・プログラムサイズ ・実行速度 の時は問題ないのですが、 ・無効 ・最大限の最適化 ・カスタム にして、リビルドを行うと、Regsvr32で以下のエラーが発生します。 「LoadLibrary("○○.dll")に失敗しました。指定されたモジュールが見つかりません。」 原因が全くわかりません。 どなたか原因をご存知の方教えて下さい。
782 名前:デフォルトの名無しさん [2009/06/04(木) 14:41:48 ] >>780 うーん、残念です ありがとうございました〜
783 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 15:18:13 ] >>781 Dependency Walker などを使って依存しているライブラリに違いが ないか調べてみるとか
784 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 16:12:10 ] 元々自分で作った物じゃないから作りを理解してないんだろ
785 名前:781 [2009/06/04(木) 18:13:26 ] >>783 素晴らしいToolの紹介をありがとうございました。 最適化無効でビルドされたDLLと最適化実行速度でビルドされたDLLを 調べてみたところ、Regsvr32が失敗する方(最適化無効)で開けないDLLがあるというようなエラーが出ました。 そのDLLをプロジェクトに配置してみたら、ビルド後イベントのRegsvr32が成功し、エラーはなくなりました。 リビルドではエラーはでなくなったのですが、コマンドでRegsvr32を実行すると、 やはり同様のエラーが出て登録はできません。(リビルド時に登録されたDLLを登録解除もできません。)
786 名前:781 [2009/06/04(木) 18:15:00 ] 続きです。 これは何がいけないのでしょうか…? 引き続き、ご存知の方教えてください。
787 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:55:51 ] class Test1 { virtual ~Test1() = 0 {} }; class Test2 { virtual ~Test2() = 0 {} }; class Test3 : virtual public Test1, virtual public Test2 { virtual ~Test3() = 0 {} }; これをコンパイルすると、 warning C4505: 'Test3::~Test3' : unreferenced local function has been removed という警告が出るのですが、何が問題なんでしょうか?
788 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 18:58:19 ] >>785 気になるのはDLLの配置場所かな 確かDLLのロードは - 環境変数PATHで指定されたディレクトリ - exeのある場所 - カレントディレクトル などを参照したと思うけど、 VC上からビルドして実行すると、たまたまカレントディレクトリが上記の <project> になるので、DLLは <project> 直下においても読み込んでくれる しかし、コンソールから実行する場合、カレントディレクトリやPATHに注意しないと うまくロードされないとか
789 名前:781 [2009/06/04(木) 19:25:52 ] >>788 まさにその通りでした。配置場所をバイナリファイルと同じ場所に配置することで解消しました。 (一層上のプロジェクトファイルに配置してました。) 本当にありがとうございました。 ただ、最適化オプションの違いでエラーになったり、ならなかったりするのが 不明のままなのが気になりますが…。
790 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 19:44:00 ] C++初心者です。 TextBoxを画面に表示したいんですが上手く作成できません。 プロジェクト作成でWIN32を選択してからテキストボックスを作りたいと思っています。 TextBox textBox1; textBox1 = gcnew TextBox; textBox1->Location = Point(100, 16); Controls->Add(textBox1); をソースに追加したのですが error C2065: 'TextBox' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'textBox1' の前に必要です。 error C2065: 'textBox1' : 定義されていない識別子です。 error C2065: 'gcnew' : 定義されていない識別子です。 error C2146: 構文エラー : ';' が、識別子 'TextBox' の前に必要です。 error C2227: '->Location' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 型は ''unknown-type'' です。 error C3861: 'Point': 識別子が見つかりませんでした error C2065: 'Controls' : 定義されていない識別子です。 error C2227: '->Add' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。 型は ''unknown-type'' です。 というコンパイルエラーが出ます。 テキストボックスはフォームでないと作成できないのでしょうか? 環境はMicrosoft Visual C++ 2005です。
791 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:02:55 ] いろいろ間違いすぎてどこから説明したものやら・・・ とにかく最初から最後まで間違ってる
792 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 21:32:30 ] >>790 そのTextBoxは.NETのWindows Formsの一部。 CLRプロジェクト以外では使えない。 おとなしく.NET Frameworkの世界にいなさい。
793 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:08:25 ] 一体どこからそういう情報もってきてんだ? 情報仕入れたとこに全部書いてるだろ
794 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:09:20 ] 入門書を4〜5冊はやらないと全体が見えないよな
795 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:11:38 ] >>793 は>>778 にレスね
796 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:17:58 ] VC6 での質問です 変数の値が変更された時にブレークポイントがひっかかるようにする方法って どのようにすればできるのでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:41:39 ] [編集] メニューの [ブレークポイント] をクリックします。 [ブレークポイント] ダイアログ ボックスで、[データ] タブをクリックします。 [評価される式を入力してください] ボックスに変数名を入力ます。 [OK] をクリックしてブレークポイントを設定します。
798 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 23:53:07 ] >>797 できました ありがとうございます
799 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:50:52 ] VC2008EEでデバッグしています。 forのループ内にブレークポイントを置いてステップアウトしているんですが、 ループの回数が1000単位なので、1回ずつ変数の状態を見るのは手間がかかりすぎてしまいます。 例えば100回に1回だけ変数の状態を見たい場合、いい方法はないですか?
800 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:55:42 ] >>799 >>796-797 の応用
801 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 17:22:52 ] >>800 6と2008EEの違いのせいか、>>797 の項目が見つからず、 いろいろいじってたらヒットカウントというぴったりの物がありました。 どうもでした。
802 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 18:21:37 ] いまここに、Ansi C で書いたスタティックライブラリ c.lib があります。 そのライブラリをつかって、C++で書いたアプリケーション(GUIに依存しない部分を記述したもの)myapp があります。 GUI はお手軽に C# で書きたいので、アプリケーション部分 myapp を dll 化して、それを C# から呼び出したいです。 そこで、myapp.dll をつくりたいのですが、いざビルドしてみると、myapp から c.lib の関数を参照している部分でリンカエラーになります。 c.lib をスタティックリンクさせた状態で myapp.dllをつくるにはどうすればよいでしょうか? c.dll を作るのがめんどくさいので、myapp.dll が c.lib を内包してくれるとありがたいのですが。
803 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 20:22:08 ] できるはずだから、リンカオプションがまずいだけ。
804 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:17:43 ] extern "C" { #include "[c.libの関数のヘッダ]" } でもリンクエラーが出る?
805 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:19:15 ] リンカオプションですか.... c.lib をスタティックリンクするのって、もしかして myapp.dll のソースで #pragma comment(lib, "c.lib") だけではダメだったりしますか? (もちろん c.lib のあるディレクトリにパスが通ってるのが前提として)
806 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 22:34:56 ] それであっている。EXEでLIB使うときと同じ。 そういえば、そのLIBとDLLでCRTの設定は同じ? 異なっているといるとよくリンカに怒られる。
807 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 23:58:52 ] 現在デバッグビルドで試していますが、ランタイムライブラリの設定は c.lib と myapp.dll の両方で 「マルチスレッドデバッグ (/MTd)」で統一してあります。 呼び出し規約が c.lib だとデフォルトの設定のままで __cdecll に、 mydllではDLLのお約束(?)に従って __stdcall になっているのが気になりますが、 これは問題があったとしても実行時にでるものであって、リンカエラーとは関係ないですよね... 書き忘れましたが、リンカエラーというのは 未解決のシンボル "int __stdcall AAA()" (?AAA@@BBB@@CCC@D" が関数 "public: int __thiscall EEE::FFF() (?FFF@EEE@@GGG) で参照されました というのがつらつらでてくるものです。 myapp(C++)もともと exe として作っていて、そこから c.lib を参照するために、 cライブラリには既に extern "C" が記述してあります。 そしてその exe はきちんとビルドできて、実行できていました。 それでも念のため、ライブラリの #include をさらに extern "C" で囲んでみると、 なぜか Direct3D のヘッダ d3dx9math.h で大量の "operator *" Cのリンゲージ関数はC++のクラス D3DXVECTOR2を戻せません メッセージがでました。 もうすこし試してみます。
808 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:34:48 ] 呼び出し規約の違いはdefファイル使わねえとそのまま名前装飾に影響する
809 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 00:54:26 ] そういうことで惑うなら、呼出規約はソースコードに いちいち書いたほうがいいよ。コンパイラオプションにて一括で指定するのではなく。
810 名前:デフォルトの名無しさん [2009/06/06(土) 02:08:13 ] MFCのMDIで秀丸みたいなマルチドキュメントにしたいんだけど(タブ形式) 普通にEditビューじゃタブ形式にならないんだけど、どうすればいいの?
811 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:03:48 ] なるだろ? 2008のSP1限定だけど
812 名前:807 mailto:sage [2009/06/06(土) 11:32:31 ] なるほど、呼び出し規約を変えたら嘘のようにエラーがなくなりました。 いままで呼び出し規約を気にした事はなかったので、良い勉強になりました。どうもありがとう。
813 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:15:31 ] なるほどなるほど
814 名前:デフォルトの名無しさん [2009/06/06(土) 12:30:33 ] VC++でWin32プログラムを作成しています。 VS2008の雛形を元に、DialogBoxを追加しようとしているのですが上手く出来ません。 現在はファイルとヘルプの2個だけです。 やったこと (1)WndProc()のmessage引数で、WM_CREATEが渡された場合に DialogBox(hInst, MAKEINTRESOURCE(IDD_XXXBOX), hWnd, Xxx); と書いた (2)Xxxは以下のような関数です INT_PTR CALLBACK Xxx(HWND, UINT, WPARAM, LPARAM); コンパイルは出来たのですが、DialogBoxは増えませんでした。 どうかやり方を教えてください。
815 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:46:35 ] その手順で普通にやればできるから、コードがどこかおかしい。
816 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:02:13 ] ShowWindowしてないだけだったりして。
817 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:07:01 ] 通常はそれも不要だが。
818 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:21:55 ] モーダルで停止
819 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 13:26:23 ] ダイアログボックスなら「表示」と書くと思うが「追加」だとか「増えません」だとか表現している点が気になる。 ・・・見当違いのことをやろうとしているのではあるまいか?
820 名前:デフォルトの名無しさん [2009/06/06(土) 14:06:02 ] libjpegのライブラリにjpegtran機能も組み込みたいと思ってるのですが、 ソース・ヘッダファイルにjpegtranプロジェクトに入ってるもの(transupp等)を足しても、 そっちで宣言されている関数だけ、 ライブラリを呼ぶ側のアプリでリンクエラー(外部参照未解決)が出てしまいます。 その他の標準でlibjpegプロジェクト内で既に宣言されていた関数は(使えるかはともかく)エラー出ません。 ソースはIJGのではなく、VC++のプロジェクトファイルも入ってる高速化版(ソフトウェア工房α)です。 nasmも入れてあり、コンパイル自体はエラー吐くことなく成功します。 ビルドの仕組みを理解できてなくてSource/Header Files に入れるだけでは駄目っぽい以外解らず助言頂けませんでしょうか。 ただし、lib自体の容量は大きくなります。 VC++のバージョンは6.0です。Win32アプリ開発。
821 名前:デフォルトの名無しさん [2009/06/06(土) 14:36:50 ] しかし、 Vc6の開発者おおいね。。libjpegとかつかったなあ。VC6ってGDI+つかえるんだっけ。。
822 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 17:47:15 ] ライブラリの開発者に直接聞かないで全然関係ない掲示板で質問されてもな
823 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 18:52:55 ] >>821 使える。
824 名前:820 mailto:sage [2009/06/06(土) 19:40:49 ] ライブラリそのものは自分でビルドしてます。 また、ソースコードはほぼIJGそのままで、IJG提供のソースを、調べたnmakeでのコンパイルしても transupp等の組み込みが出来てないので、同様のエラーを吐きます。 日経ソフトウェアダウンロード からプロジェクトファイルを落として見たものの同様の状況で jpegtranに使用される関数をライブラリに組み込む事が出来ませんでした。 ただSource/Header Filesに入れるだけではライブラリ作成時にエラーが出なくとも呼び出し側でリンクエラー同じです。 bccでlibjpegライブラリを使ってjpegtranの無劣化回転処理を組み込んでいる方が居たので、 可能な事は確かなのですが・・・。(そのライブラリはVC++からでは使用できず)
825 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 20:05:58 ] すみませんひとりごとでした
826 名前:デフォルトの名無しさん [2009/06/06(土) 20:08:50 ] そこで#pragmaですよ。。
827 名前:デフォルトの名無しさん [2009/06/07(日) 07:29:11 ] Win32アプリケーションを選択してC++でプログラムを書いてるのですが、 std::cout<<message<<std::endl; とかやってもどこにもメッセージが出力されません。どうすればよいですか?
828 名前:デフォルトの名無しさん [2009/06/07(日) 08:01:24 ] AllocConsole()とかを使おうかと思ったのですが、よく分からなかったので HWNDをMessageBox()に渡して、メッセージを出すことにしました。 ありがとうございました。
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の無視プロパティ活用しろよとは思うが。