1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
147 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 23:00:19 ] 昔のWin32APIを勉強してた自分を振り返ると、デバッグが上手ければもっと楽に習得できたと思った VSの呼び出し履歴とか最初全然使ってなかったなぁ( ´ω`)
148 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:23:10 ] こんちわお世話になります intについて聞きたいです 整数型の型名にintってありますよね この型名のintと 関数mainの前に書かれているintは同じなのでしょうか? 私の所有する解説本ではmainについて int main (void) メイン関数の定義開始 とだけ説明しているだけなのです 意味を並べていくと int:整数型の型名 main:main関数の定義開始 void:戻り値のない評価式 ってことですよね なぜmainの前にintを書くのか凄く気になります 勝手に想像しちゃうと 最後に書かれているreturn 0(戻り値が0なら正常終了、それ以外なら異常終了) このゼロは整数なのでintを記載するのかな? main関数定義開始の行頭にintはなぜですか? 私の所有する解説本は結局、最後のページまでこのことには触れていませんでした 勝手な推測してしまいましたが どなたか正しい答え教えてください
149 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:35:43 ] あなたのもってる解説本が糞だということはわかりました。
150 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:39:05 ] int main( void ) ↑ ↑ ↑ 戻り値 関数名 引数 これを見て意味が分からないのであればプログラムはあきらめて下さい。
151 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 02:55:27 ] いやいやw、それで諦めるのはまだ早いだろ。 まだ148の読んでいた本がダメすぎただけという可能性が高いということしか分からない。
152 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 03:15:01 ] わかった! >>150 さんのでわかったよ みなさん夜分お疲れのところありがとうございましたm( _ _ )m
153 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 03:18:47 ] ていうか 私の推測は当たってたってことですよね もしかして私はセンスあるのかなwww
154 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 06:15:26 ] こんちわお世話になります 有料でも構わないのでC++の質問すれば 私が理解できるまで懇切丁寧に教えてくれるサイトないですか 解説本は解説するために専門用語連発でわかりにくい部分があるんです その専門用語を解説するページが無いので 結局、解説本→グーグル→解説本→グーグル(たまにIT辞書) こんな感じです 進行するのがかなり時間かかってしまいます かと言って基礎をすっ飛ばすわけにもいかず 超初心者用とか超入門とか書いてあっても中身は専門用語だらけ 無料の掲示板では解答者の善意で教えてもらってるわけで 解答者もいちいち注釈つけてられないですよね てことで嘘つき解説本はタイトルに「超入門」とか「超初心者」とか書いてるけど 内容は本当の初心者にでもわかるものはないですね だいたい解説に注釈無しで専門用語を使うこと自体 初心者には無理。 著者はタイトルに美味しそうな単語並べてとにかく売れる事が優先のものばかり 教えることが大前提の本はないでしょうか 超々ーーーぉ入門者でも理解できるサイト(有料可)か解説本教えてください
155 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 09:00:29 ] わかるまで懇切丁寧に教えて欲しいのならば学校に通ってください。 あなたの知能レベルで理解できるかどうかなど他人にわかるものではありませんよ。
156 名前:141 mailto:sage [2008/11/17(月) 09:35:16 ] >>146 stdは2005EEからのアップデートが可能みたいですね。 確かにそれなら安いし購入も検討します。 まだリソースエディタがフリーだとどう辛いのかもわかりませんが…
157 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 23:12:09 ] リソースエディタだけIDEに統合されてない フリーソフトを使うってのは辛いって話でそ
158 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 00:56:24 ] coutとprintfの違いを教えてください
159 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 07:46:21 ] >>158 coutはC++でしか使えない printfはCでも使える
160 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 07:51:42 ] ttp://www.asahi-net.or.jp/~yf8k-kbys/newcpph1.html こちらのサイトを参考にしてVisual C++ 2005で練習をしているところなのですが 完成したプログラムを「デバッグ開始」で動かそうとすると、 一瞬だけコマンドプロンプトの黒画面が出て、すぐに消えてしまいます 最初のうちは普通に実行され、黒画面が残ったままになったので 設定を間違えて弄ってしまったのかもしれません 原因、元に戻す方法がわかる方はいらっしゃいませんか?
161 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 09:02:07 ] リソースエディタなんてフリーで問題ないよ どの道付属のアイコンエディタは使い物にならんし
162 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 09:03:33 ] >>160 最後にgetch()を入れればキーを押すまで画面がとまるよ
163 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 10:05:38 ] >>159 了解です Printfで書くようにします Cout使わないといけない場合なんかはないですよね ありがとうございます
164 名前:141 mailto:sage [2008/11/18(火) 10:18:26 ] >>157 解説ページなどでResEditやXN Resource Editorでそれほど問題なさそうだったので、 どのようなデメリットがあるのかよくわからないということでした。 わかりにくくてすみません。 とりあえずフリーのものでやってみようかなと思います。
165 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 16:42:30 ] >>162 ありがとうございます でも最後にgetch();を付けるとエラーが… 「デバッグ無しでビルド」を選択したら とりあえずは消えない様になりました
166 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 16:44:50 ] そもそもデバッグしないでいいならCtrl+F5で実行すりゃいい
167 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 17:21:41 ] あとは 1.system("pause"); 2.getchar(); 3.main関数の最後の行("}")にブレークポイントをいれる から好きなのを選べばいいと思うよ
168 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 12:30:43 ] 今まで少しの間でしたがVC#2005EEを使っていました。 今日からC++を学ぼうと思い、VC++2008EEを使ってみたのですが コード補完機能がないのが気になりました。 VC#2005EEのときは、1文字目から予測リストが出てくるので非常に使いやすかったのですが VC++2008EEにはそのような機能はないのでしょうか。
169 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 13:32:24 ] >>168 ないよ せいぜい関数の引数リストやクラスのメンバリストが出る程度だがそれでもないよりましだ
170 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 13:33:56 ] あ、そういえばCtrl+スペースで出たな
171 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 13:51:54 ] 質問です。Visual C++2005を使っています。 プロジェクトをつくるとそのフォルダにReadMe.txtが自動で作られますが ここに各ソースファイルの簡単な説明を追記したいのですが、どのようにすればよいのでしょうか? 作成されたReadMe.txtの最後の方に、 「AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする ソース部分を示します。」とか書いてあるのですが、 各ソースファイルのコメント部分にTODO:と入れればその行が自動的に ReaMe.txtに出力されるのかと思ったのですが、なんともなりません。 何かやり方が違うのでしょうか? そういったReadMe.txtへの説明の自動追記機能はありますか? それともRedMe.txtを直接開いて手書きで説明を加えなくてはならないのでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 13:52:53 ] あ、>>171 はVisual C++ 2005 Express Editionです。 ひょっとしてエディションの問題???
173 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:06:59 ] >>165 コンパイルエラーならconio.hがインクルードされてないとかじゃね
174 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:13:36 ] // TODO: ここにコマンド ハンドラ コードを追加します
175 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:19:32 ] TODOコメント使うのはAppWizardであって、ユーザー(あなた)ではない AppWizardがあなたが追加、またはカスタマイズすべきソース部分を教えてくれているだけ AppWizardが生成するReadMeはあなたに対する説明文であって、あなたのアプリケーションを使う人に対するものではない
176 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:43:17 ] >>169 レスありがとうございます。たしかに、ないよりはましですね。 もやもやがなくなったので勉強してきます。
177 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:45:48 ] >>174-175 レスありがとうございます。 えーと、つまりReadMe.txtもTODO:コメントも、後から 自分で追記したりするようなものではないということでいいんでしょうか? ReadMe.Txtはプロジェクト作成時にVCが自動作成したファイルだけを示し、 その内どこをいじるのかがTODO:コメントで指示されるという解釈であってますか?
178 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:29:23 ] いやあれウィザードが吐くだけの固定コメだから メッセージマップとかをクラスのプロパティからいっぱい作って見れ 全部同じコメだ
179 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 12:12:07 ] int型のポインタを宣言するときは int* pA; とするのがいいのか int *pA; とするのがいいのか教えていただけませんか。 テキストにはどちらでも良いと書いてありましたが、できれば多数派に合わせておきたいので・・・
180 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 12:36:44 ] >>179 ポインタをtypedefする typedef int *LPINT LPINT pA;
181 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:31:05 ] >>179 後者が一般的
182 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:32:25 ] int * p; ではダメですか?
183 名前:デフォルトの名無しさん [2008/11/22(土) 16:31:46 ] 名前: E-mail: 内容: 超初歩の質問ですいません。環境はXP,VC++2008(SP1)でインストール直後のまっさらな状態です。 String *name = textName->Text; が error C3699: '*' : この間接指定を型 'System::String' で使用できません と、VisualStudio2008からダメ出しされまして、エラーメッセージどおりに、 String ^name・・・・ としたらうまく通りました。 エラーの原因はStringクラスが定数文字列前提だからかな?とも 思ってますが、それよりも^演算子(なんでしょうか?)の 意味がさっぱり調べられません。 ググってもこれといったものが出ませんでした^^; ^の意味をどなたか教えていただけませんでしょうか・・・。
184 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 16:51:51 ] >>183 msdn.microsoft.com/ja-jp/library/ms235215 (VS.80).aspx
185 名前:デフォルトの名無しさん [2008/11/22(土) 17:08:32 ] 183です。 助かりましたー。新仕様だったんですね。
186 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 19:29:02 ] ちょw
187 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 20:37:46 ] 名前: E-mail: 内容: なんぞこれ
188 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 21:32:16 ] デスマの合図に決まってるだろ
189 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 00:33:46 ] 質問です。VisualC++2008をつかっています。 ソースを書き換える前に保存をしたいのですが、 全部丸ごと別名で保存する方法を教えてもらえませんか? .cppや.hを個別に保存はできましたが、プロジェクトの中身を丸ごと別名で保存はできないのでしょうか?
190 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 01:26:10 ] 逆に考えるんだ 元のプロジェクトの中身をコピーして別名にしたあと上書き保存すれば結果は同じだと
191 名前:189 mailto:sage [2008/11/23(日) 02:01:38 ] >>190 なるほど、ありがとうございました
192 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 03:58:12 ] Visual Source Safeを使えばいいと思うよ
193 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 11:48:07 ] 次のVC++で改良される自動生成コメント ... // TODO: ここに 派遣さんが コマンド ハンドラ コードを追加します
194 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 17:04:29 ] SDKのダイアログリソースを見ると全部英語表記で記述してありますが VCでビルドするともちろん日本語で表示されますが 日本語用のストリングテーブルがどっかにあるんですか?
195 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:14:00 ] 調べた事ないが、リソースDLLがどっかにあるんじゃまいか?
196 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:25:55 ] 予約語にinterface ってのがあるんだがこれ何? Javaのinterfaceと同じ感じなのか? 言語仕様にはこんなのなかったとおもうんだが
197 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:28:58 ] C++/CLIのinterfaceではないだろうか
198 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:39:06 ] >>197 調べてみたらそのようですね ありがと
199 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 16:16:26 ] すみません、ゲームをリリース版でコンパイルして実行ファイルを作ってみたんですが MSVCR80.DLLというランタイムに依存してしまうようなんですが このDLLは再配布可能でしょうか?
200 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 19:20:22 ] っ「www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja 」
201 名前:デフォルトの名無しさん [2008/11/26(水) 07:43:24 ] プログラミング超初心者で>>23 と全く同じ状況になってしまいました デザイン画面は 「このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。」というエラーが出てしまいます ↓ちなみにこのコードを追加したらなってしまいました private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //オプションボタン (ラジオボタン) の状態を確認 if (this->radioButtonKisu->Checked == true){ System::Diagnostics::Debug::WriteLine("奇数が選択されました"); }else if(this->radioButtonGusu->Checked == true){ System::Diagnostics::Debug::WriteLine("偶数が選択されました"); }else{ MessageBox::Show("奇数か偶数かを選んでください","お願い"); return; } } 前に成功したビルドの状態に戻せないんでしょうか 最初からやり直せば次に進めるんでしょうか
202 名前:201 mailto:sage [2008/11/26(水) 11:04:56 ] あぁ、自己解決しました…
203 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 20:30:45 ] ゲームを配布しようと思ってるんですが コード生成のMTとMTdって何が違うんですか? Dllが付くものは駄目だということは知っているんですが…
204 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 22:16:31 ] ライブラリが最適化されてるか否か
205 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 23:16:52 ] もう少しわかりやすく説明して欲しいんですが…
206 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 23:26:24 ] デバッグ用じゃないかデバッグ用か
207 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:00:34 ] ggrks
208 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:45:38 ] じゃあ要するに配布の再はMTを使った方がいいってことですかね?
209 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:52:04 ] そういうことにしておけばいいんじゃないですかね
210 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:59:05 ] くたばれクソども
211 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 09:56:20 ] MTdはデバッグ用でこれでビルドしたやつ配布すると馬鹿にされる。
212 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 11:39:13 ] >>208 Releaseモードでビルドするんだよ
213 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:52:45 ] myfunc.h という名前のヘッダファイルに int max(int x,int y); という関数プロトタイプを宣言し main()があるソースファイルとは別のmyfunc.cppという名前のソースファイルに int max(int x,int y) の定義文を記述しました。 そしてmain()があるソースファイルのはじめに #include "myfunc.h" と記述して動いたのですが、はじめの#include文を消去しても、ヘッダファイルに適当な関数プロトタイプの宣言を追加しても 動きました。(定義はしていません)はじめに#includeを記述する必要はあるのでしょうか。 そもそもヘッダファイルの必要性がよくわかっていないので、教えていただけないでしょうか。
214 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 17:21:44 ] よくわからんが、とりあえず何か消したら念のためビルドのクリーンとかで クリアしてから試してみては。
215 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 18:07:33 ] 普通はヘッダの方は必要に応じて外部参照関数呼び出しを記述 extern int max(int x,int y); で、cまたはcppソースの方にプロトタイプ宣言を入れる cpp内で関数を参照する時、呼び出し側の関数よりも上に本体のコードがあれば プロトタイプ宣言は必要ない。 本体が下にある場合はプロトタイプ宣言が必要。
216 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 00:11:19 ] >>214 ,215 ありがとうございました。いろいろ試してみます。
217 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:14:13 ] すいません、はじめてフォームアプリケーションを作ってみようと思ったんですが、 テキストボックスに入力した値がどこに入るのかわかりません。 Messagebox::Showでそれっぽいものを表示してみようとも思ったんですが、 System:::string この型は演算子として使用できません(String[0]とかも)となります。 private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {}の中で自分で何かをやるんでようか? 助けてorz
218 名前:217 mailto:sage [2008/11/28(金) 12:16:01 ] MessageBox::Showを書いたのはbuton1_Clickの中です。
219 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:21:32 ] なんつーか、それ以前にやることやったほうがいい気がするが。 もしくは本でも読むか。 試しに、buton1_Clickの中に MessageBox::Show(textBox1->Text); とか書いてみ
220 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:28:35 ] >>219 ありがとうございました おかげでスーパーハカーになることができました!
221 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 13:34:02 ] >>216 とりあえずmax()の本体を別のcppファイルに移してためしてみるといい ヘッダーの使い方がわかるはずだ
222 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 21:13:21 ] >>221 ありがとうございます。max(int x,int y)が定義されているcppファイルを削除しても動いてしまったので ためしに maxi(int x,int y)に名前を変えたところ、無事(? 動かなくなりました。 using namespace std; を main() があるcppファイルのはじめに記述していたのですが stdの名前空間の中にmaxがあったのが原因だったみたいです。 その後、ヘッダーファイルをincludeしなかったりしてみたりと色々試してなんとなくですがヘッダの意味がわかった気がします。
223 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 21:56:04 ] 日本語でおk
224 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 15:59:58 ] VC++2008無料版を使っています。 class の宣言文でpublic:を記述するとclassの位置までインデントが戻ってしまうのですが、 classの位置より1段階インデントした状態にオートインデントするにはどうすればいいのですか?
225 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 10:19:41 ] USBにエディタを入れて持ち歩きたいんですけど Visual C++ライクなエディタってありませんか? Notepad++Portableは知ってるんですけど、折り畳みがダサいので・・・
226 名前:デフォルトの名無しさん [2008/12/03(水) 01:24:56 ] 実行すると、Debugフォルダがかってに作成されちゃうんですが、仕様ですか?
227 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 05:33:26 ] >>226 仕様です。 どうしても作りたくなければReleaseビルド以外使うな
228 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 08:33:13 ] >>226 プロパティいじれば好きに出来るよ $(OutDir) とか $(IntDir) を好きな名前にしたらいい
229 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:13:00 ] ゲーム製作をしていてVC++2008 でコンパイルしています。 コード生成設定をMTdでやると通るのですが、MTでやると以下のエラーが出てしまいます。 LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。 C:\Documents and Settings\***\デスクトップ\**\Debug\***.exe : fatal error LNK1120: 外部参照 2 が未解決です。 LIBCMTを無視しても逆にエラーが増えてしまうんですが、どうすればいいでしょうか? ゲーム配布時にはMTdでもMTでもdllが付かなければ問題ないですか?
230 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:41:50 ] >>229 libcpmtdはデバッグ用。内部でデバッグ用のmallocとfreeを呼んでるから/MTdじゃないとリンクできない。 リリースビルドならlibcpmtを使う。 ってか、プロジェクトの作成をウィザード任せにすればその辺を自分でいじることなんてないと思うんだけど。
231 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:50:34 ] なるほど、debugモードでコード生成する時はMTdで リリースモードでやるときはMTでやるものなんですね 試しにリリースモードでMT生成してみたら通りました。 どうもありがとうございましたー。
232 名前:デフォルトの名無しさん [2008/12/03(水) 20:24:26 ] すいません windowsXP SP2で visual c++ 2005 Express Editionを使っているんですが 以前のエラーのため、Windows Forms Designer Package ({7494682B-37A0-11D2-A273-00C04F8EF4FF}) 以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B}) 以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B}) 以前のエラーのため、Visual Studio Common IDE Package ({6E87CFAD-6C05-4ADF-9CD7-3B7943875B7C}) というようなエラーが出てしまいます コマンド プロンプトで 'VCExpress /resetskippkgs' を入力しろと出るので試しましたが無理でした 調べたところbeta版がどうこうとあるのですが、自分はそのようなものは入れていません beta版のアンインストーラーを使用しても、該当するものはありませんでした 何か解決策はないでしょうか?
233 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 10:44:16 ] そのエラーは何をする時に出るの?
234 名前:デフォルトの名無しさん [2008/12/06(土) 01:18:55 ] お願いします。 WinXP SP2でVisual c++ 2005 Express Editionです。 UNICODEのIniファイルの情報をGetPrivateProfileStringで取得しようと しているのですが、lpReturnedStringにはlpDefaultの値が入ってしまいます。 IniファイルがANSIのときはうまくいきます。 GetPrivateProfileStringの引数はワイド文字にしているつもりです。 意図的にGetPrivateProfileStringWにしてもダメでした。 UNICODEファイルの際の注意点などあるのでしょうか? ご教授ねがいます。
235 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 01:29:29 ] >>234 INI系の関数はAでもWでもファイルの中身はマルチバイト文字として扱われる。 そのおかげで、Aで書き込んでWで読み取るなんてことができるんだけどね。 もちろん、文字コードの自動判別なんてやっていない。
236 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 10:27:18 ] >>234 > UNICODEのIniファイル 拡張子がINIってだけで中身がUnicodeじゃあ、INIファイルとは呼べ ないシロモノだな。 自分で、CStdioFileクラスのCStdioFile::ReadString()/WriteString() なりを使って、1行ずつ読み込んで文字列処理するコードを書くしか ないな。(w
237 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 12:35:20 ] そうだったのか。 たしかにINIファイルって、ASCIIしか使わないけど……
238 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 13:08:53 ] > INIファイルって、ASCIIしか使わないけど…… んなこたぁない。シフトJISであれば漢字やカナ文字だって使える。 でなきゃ、漢字やカナ文字を含むパス名やファイル名の文字列保存に 使えない。
239 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 13:49:53 ] マジ?シフトJISなら良かったのか。 それは気がつかなかった。今度試してみよう。 ていうか、レジストリ弄りたくなくて、いまだにINIファイル使ってるんだよね。
240 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 14:34:14 ] Windowsフォルダに際限なくINIファイル作られるより、レジストリの方が ずっとマシだと思えるんだが? ログインユーザー単位で設定が分けら れるというメリットもあるし。 第一、レジストリなんて意識せずともWindowsのシステムでいじられ まくりだぞ。
241 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 14:37:53 ] >>239 Shift_JISというか、そこで使っているコードページの文字コード。 欧米ならWindows-1252だし、繁体中国語圏ならBig5という具合。 >>240 ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。
242 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 15:03:55 ] >>241 > ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。 MFCフレームワークのデフォルト処理を前提に書いてしまった。言われ れば、まぁ確かにそうだ。 ところで、複数インスタンス起動した アプリからiniファイルへの同時アクセスとかって、今は問題ないん だっけか?
243 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 16:50:51 ] たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。 自フォルダにINIファイル作るなんて普通じゃないか?フリーソフトなんかは特に。 わざわざ選択肢減らす必要なんてないしケースバイケースでよかろう。
244 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 17:30:28 ] >自フォルダにINIファイル Program Filesに置いたらVistaで問題が出る。 All UsersのAppDataとかでどうか。
245 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 17:41:50 ] >>244 >Program Filesに置いたらVistaで問題が出る。 はじめやりずれーって思ったら他のユーザーでログインしたときを考えたら納得した
246 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 19:27:48 ] >>243 > たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。 昔は作りまくりだったんで、レジストリが搭乗したんだが? 今もMFCでCWinApp::SetRegistryKey()呼ばないとiniファイルを使うけど、 iniファイルが作られるデフォルトの場所はWindowsフォルダだよ。 >>244 > All UsersのAppDataとかでどうか。 自分(現在のログインユーザー)用の「マイドキュメント」フォルダの パスはSHGetSpecialFolderLocation()で取得できるけど、これって取れる んだっけ? もしかして決め打ち? それはそれで問題な気もするが? なんて思ったら、 SHGetSpecialFolderLocation(hwndOwner,CSIDL_COMMON_APPDATA,...); でいけるのか。 知らない間にCSIDLずいぶん増えているな。 ttp://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx
247 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 19:30:24 ] 昔話がしたいだけか。