1 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:25:17 ] 1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14 Visual C++入門者・初心者からの質問を、 お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 。
116 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 09:57:05 ] pimplイディオムを使うとインテリセンスも利かなくなるんだけど これって意図された動作なのかただの偶然なのか?
117 名前:デフォルトの名無しさん [2007/05/19(土) 12:09:55 ] 昔VC6.0で作ったプログラムをVC2005に移植したいんですが、 そのままだとビルド出来ませんでした。 プロジェクト自体は変換とか出来たんですが、StdAfx.hでインクルードされてた Windows ヘッダー ファイル群(windows.hとか)が、No such file or directoryでエラーになります。 かといってこれを外したらコンパイル通らないし・・。 1から組むのは大変なんで、何とか使い回せないかと思うのですが、 何かいい方法ありますでしょうか。
118 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:12:36 ] Express EditionでPlatform SDKをインストールしてないとか、 パス通してないとかってオチはないよな?
119 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:16:38 ] No such file or directoryぐらいの簡単な英語なら理解できるだろ
120 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 12:23:22 ] >>117 おいおい初心者の俺でも分かるぜ。
121 名前:117 [2007/05/19(土) 14:01:08 ] 117です。 すみません、仰るとおり、SDKをインストールしていませんでした。。。 インストールしたらインクルードは解決しました。 今度はコンパイルエラーとwarningがいっぱい出てきましたが ワーニングは無視してコンパイルエラーを修正。 (コンパイルエラーは for(int i=0) の i を for以降で使ってました) 次に「ファイル 'LIBC.lib' を開くことができません」が出ましたが、これはググッて解決。 (プロジェクトのプロパティで特定ライブラリの無視にLIBC.lib追加。) 現在、このエラーと格闘中です。 「zlib.lib(gzio.obj) : error LNK2019: 未解決の外部シンボル _errno が関数 _gz_open で参照されました。」
122 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:21:28 ] VCのインテリセンスは昔からウンコ
123 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:27:05 ] errno は VC2005 だとマクロになってた気がするよ。 余計な warning が鬱陶しければ #pragma warning(disable:警告番号) で消した方が。
124 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:27:29 ] こんどはzlibの追加だネ!
125 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:24:53 ] VC2005についてるSTLとSTLportでは何が違うの?
126 名前:117 mailto:sage [2007/05/19(土) 15:37:14 ] 117です。 zlib.libを作り直そうと思って調べてるんですが、 VC2005でStatic Libraryは作れないんでしょうか? 2005、全部1から作るには楽なんだろうけど、ちょっと違うコトしようとしようとすると途端に・・
127 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:43:35 ] 初心者の俺でも作れるし
128 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:31:04 ] VC6使ってたんなら初心者というわけじゃないだろうし 自分で調べてみるぐらいしようよ ちょっとでも調べてたらそういう質問はないと思う
129 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:10:17 ] ダイアログの大きさがフォントの大きさによって変わってしまうのですが、 常に設計時の大きさになるようにする設定ってありますか?
130 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:12:03 ] あ、実行時にフォント変えてもダイアログの大きさは変わらないのかな? ↑は無視してください。
131 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:28:46 ] VC++.NETとVC++とは違うものなのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:34:45 ] .NET使わないなら単なるVC7、VC8
133 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:55:23 ] >VC2005についてるSTL そもそもそんなものは無い
134 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:55:34 ] クグって見たんですが.NET Framework?MFC見たいな物? VC++ .NET?って? .NET Framework?って? VC++6.0で知識が止まってますorz
135 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:10:09 ] VistaマシンでVC6.0は使用できないのでしょうか。 (「VMWare等で旧OS(XPや2k)入れて使え」と言うのは取り合えず置いておいて) インストール試してみようと思いsetup.exe実行 →「このプログラムには基地の互換性の問題があります。」 と表示されたところでいったん止めてWeb漁ってるのですが、なかなか有効な解放が得られず。。。
136 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:33:02 ] >>134 JavaのVMに相当
137 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:40:23 ] VC++.NETという表現は使われなくなりました。
138 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:52:02 ] >>135 MS的にはサポート外です。
139 名前:117 mailto:sage [2007/05/19(土) 22:08:00 ] 117です。 何とか解決しました。 ググってはいたんですが、VS2005の用語が全然分からなくて、とっかかりがなかったです。 ソリューションて何?とかいう浦島太郎状態で。 5年前に自作したツールの、数字を決め打ちしてた部分を1カ所直したいだけだったんですが 結局ビルド通すのに丸一日かかりました。 で、通ったら今度はデータが読めない・・・。 fwrite(this,sizeof(Cdata),1,fp); ってやってクラス丸ごとバイナリで保存しておいたデータを fread(this,sizeof(Cdata),1,fp); で読み込んでるんですが、読み込んだデータが化けてるっぽい。 この辺の仕様も変わっちゃってるのかなぁ・・・
140 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:16:11 ] ひとりごと
141 名前:117 mailto:sage [2007/05/19(土) 22:25:25 ] 昔に保存したデータをあきらめて、データ作り直したら行けるっぽいです。めんどいけど。 長々チラ裏に付き合ってもらってありがとうございました。
142 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:45:48 ] 考えられる原因はこんなとこか? バイナリモード指定していない アラインメントの指定がおかしい データ型の大きさが変わった (ex time_t)
143 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:46:43 ] インスタンスのメモリイメージをそのままをバイナリ保存って無謀すぎ。 普通はシリアライズ用関数とか用意するもんだ。
144 名前:デフォルトの名無しさん [2007/05/19(土) 22:47:52 ] あと、文字列がANSIだったとか。
145 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 22:57:12 ] 手抜きなんだからしょうがない
146 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:04:21 ] >>117 vtable の事もたまには思い出してあげてくださいね。
147 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:42:57 ] どうせ ANSI 文字列をユニコードで表示しようとしてるんだろう。
148 名前:デフォルトの名無しさん [2007/05/20(日) 17:31:22 ] 旧バージョンのVisual C++4.0で「コンソールプログラムを作成する」 というような使用条件であれば、十分に活用できますか? (主にRS232CをWin32APIから使用するのが目的です) また、当時NT4.0との組み合わせで不具合(多分使用できない機能?) があるとかの話を耳にしたような記憶があります。 WinXPおよびWin2000での動作はどうでしょうか? バージョンからして、既に現状に沿った話でなくて恐縮ですが、ご教示下さい。
149 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:37:58 ] そこまでしてVC4を使う理由が判らない。 つーか、Win32APIからRS232Cを使うというのが何を意味しているのか判らない。 単にシリアル伝送したいだけならmodeコマンドで条件設定してcopyコマンドでもtypeコマンドでもできるだろうに。
150 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:40:38 ] XP+VC5を使ってる人は知ってるけど、 VC4はわからないなぁ。
151 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:42:38 ] 昔のプログラムでも動くのは動くし、動かないのは動かない 適当なの探してきて動かしてみればいい
152 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:48:47 ] include の path 指定の書式について質問です。 stdafx.h #include <../creptopp/sha.h> と記述してこれをコンパイルすると、 -------------------------------------------------------------------------------- コンパイルしています... debug.cpp c:\test\Anonymous\stdafx.h(126) : fatal error C1083: include ファイルを開けません。'../../creptopp/sha.h': No such file or directory -------------------------------------------------------------------------------- ファイルの階層は下のようになっています。 test - creptopp/ - Anonymous/stdafx.h #include <sha.h> #include <../creptopp/sha.h> #include <../../creptopp/sha.h> と試してみたのですが、うまくいきませんでした orz どうぞよろしくお願い致します。m(__)m
153 名前:152(追記) mailto:sage [2007/05/20(日) 18:53:27 ] * Crypto++ Library 5.4 www.cryptopp.com/ cryptopp/sha.h cryptopp/sha.cpp 展開するとみたいになっていました。これを利用したいです。
154 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:54:15 ] #include <file-name> 使うならちゃんとpath通しとけよ
155 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:59:35 ] >>152 相対パスの元は、stdafx.h の場所ではなく コンパイルしている cpp の置かれた場所なんじゃね?
156 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:13:50 ] 解凍してそのまんまビルド ライブラリができたらヘッダとlibを適当な場所へ置いて使うだけ
157 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:29:58 ] C++で普通に関数にするのとクラスのメンバ関数にするのとではとちらが遅いのでしょ?
158 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:38:42 ] 一概には言えない。コンパイラの最適化で、実質的な差が出ない可能性も高い。 速度に関しては、個別に実測する以外は全てただの憶測。
159 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:33:48 ] オーバーヘットとかは無いの?
160 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:40:45 ] 非仮想関数ならthisを積む程度の差しかないだろうなあ まぁそんなこと考えるのは時間の無駄だから、コードの見易さ・美しさを考える方がいいよ
161 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:00:15 ] >オーバーヘットとかは無いの なんですか? その「オーバーヘット」って。
162 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:06:05 ] 夏塩蹴
163 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:54:16 ] まあ韓国の文化は冷麺のどんぐり麺?あれだけは評価できるね
164 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:07:28 ] VC++2005アカデミック日本語版で質問です 「warning C4996: 'scanf' が古い形式として宣言されました。」 scanf()を使うと2005から上記の警告が出ることはググって分かったのですが 当方の警告文は全て英語のままで上記の一文が出てきません ↓これだけ 'This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' 日本語の警告文の説明を表示させたいのですがどこを設定すればいいのでしょうか? よろしくお願いします
165 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:41:21 ] C4996でググればいい。 というより、MSDNライブラリインストールしろ
166 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:58:06 ] 役に立たねぇ香具師だなぁ。警告を日本語にしたいって書いてんだろ。 C4996だけの問題じゃねぇんだよ。判ってねぇなら書くなよ。
167 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:11:29 ] すいませんした。俺が悪いんです。この通りです。許してください。読み違えただけなんです。怒らないでください。日本語にするやり方分かります。でも教えないです。ごめんなさい。
168 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:13:17 ] どんな警告・エラーもCxxxxの番号が振られているんだから、 C4996以外もその番号でググればいい。
169 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 09:58:06 ] わざわざ英語で出るように自分で設定変えたくせに 元に戻す方法は人に聞くのってどういう了見なんだ?
170 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 11:00:13 ] C4996でググったらみんな日本語で警告が出るのに 俺の環境じゃ英語しか出ねえよ て解釈した 英語にアレルギーがあるかしらんがこの機会に慣れたら?
171 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 11:32:05 ] VC++2005日本語版に付属のコンパイラとは別に英語版のコンパイラも入れたの?
172 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 11:33:59 ] 特に何もしてない
173 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 11:37:29 ] 何もしないで変わるかっつーの
174 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 13:00:30 ] MSのサポートに訊けばいい
175 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:58:17 ] MSマンセー
176 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:24:09 ] 誰かがVC++2005EEでも入れて混ざってんじゃないのかね
177 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:31:25 ] VS2005無印にSP1当てたら俺も英語だけになったぞ でもたいして問題じゃねえしMSDNライブラリあれば心配ねえよ
178 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:27:34 ] それは、英語版のSP1を入れてしまったのでは?
179 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:56:28 ] (´,_ゝ`)プッ ソンナオチダッタノカ
180 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:14:52 ] んなわけない
181 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:24:41 ] そうだな。 本人は「特に何もしてない」と言ってるんだからSP1だってあててるわけが無い
182 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:31:01 ] 痴呆か。
183 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:31:36 ] 俺もSP1当てたからかしらんが英語だよ その程度の日本語の説明なら要らんけど あと、うちはProfessionalだな
184 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:38:23 ] SP1入れてない。 MicrosoftUpdateで時々入れようとしてるんだけど毎回失敗する。
185 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:17:33 ] 俺も前失敗続いてたけど最近あらためてやったら成功したな 何が原因だったんだろ
186 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:43:17 ] ちょっとツンだっただけさ
187 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:18:31 ] SP1を当てたが別に英語になっていないぞ
188 名前:デフォルトの名無しさん [2007/05/24(木) 10:37:27 ] MFCで×ボタンを押してアプリケーションを終了するとき どこになんと言う名前でその処理が書かれているか教えてください 終了するときに処理を付け加えたいのでお願いします
189 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 10:54:40 ] WM_CLOSEのハンドラを追加
190 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 10:58:08 ] SC_CLOSE → WM_CLOSE → WM_DESTROY の順じゃないかな。それぞれのデフォルトハンドラで MFCだと、OnSysCommand() からクローズ投げて OnClose() が呼ばれ、そこでDestroyWindow()して OnDestroy()が呼ばれる。 もしかしたら違うかも。spy++やデバッガで確認してみて
191 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 11:00:22 ] 処理内容によっちゃExitInstanceでという選択肢も
192 名前:デフォルトの名無しさん [2007/05/24(木) 11:16:42 ] ありがとうございます処理内容はダイアログを表示させて パスワード入力とOKボタンを押し終了させるものです パスワードが違っているかキャンセルボタンを押した場合終了しません という処理をしようと思っています
193 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 11:47:00 ] クラックしてやんよ
194 名前:デフォルトの名無しさん [2007/05/24(木) 11:47:19 ] 連レスすいません ハンドラの追加でON_WM_CLOSE()を追加したんですが 対応する関数に反応ありませんでした
195 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 11:54:15 ] ×ボタンってダイアログの話なの? 何がどうなってるのかよくわからん、反応が無いとは何で判断?
196 名前:デフォルトの名無しさん [2007/05/24(木) 11:57:31 ] >>195 フォームビューによるダイアログです プロパティのメッセージから追加しました ブレークポイントをつけて通っているか判断しました
197 名前:デフォルトの名無しさん [2007/05/24(木) 11:58:45 ] www.kumei.ne.jp/c_lang/sdk/sdk_08.htm ↑簡単に言うとこういうことをMFCでやりたいのです
198 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 11:59:40 ] んーと、WM_CLOSEが来るのはその閉じるウィンドウにくるんだよ。 こないのはおかしいね。spy++で観察してみては。
199 名前:デフォルトの名無しさん [2007/05/24(木) 12:14:47 ] spy++でみてみるとWM_CLOSEはちゃんとありました
200 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:17:58 ] エスケープキーでダイアログが閉じないようにするので、そのへんやったことあるけど ダイアログベースじゃない場合は、どのクラスがメッセージを処理してるかだな
201 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:25:40 ] sdi/MDIでeditビューの場合は編集中にプログラム閉じようとすると 保存しますか? みたいな確認でたような気がするけどどうだったかな?
202 名前:デフォルトの名無しさん [2007/05/24(木) 12:27:28 ] 観察した結果は WM_DESTROY→WM_NCDESTROY→WM_CLOSE→WM_SYSCOMMAND でした
203 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:45:28 ] CMainFrame::OnCloseにちゃんと来るじゃん そのあと閉じていいか確認が出る
204 名前:デフォルトの名無しさん [2007/05/24(木) 13:13:44 ] 閉じていいか確認が出ないのですが CMainFrame::OnCloseをオーバーライドして使えばいいということですか? そこも通らないような・・・
205 名前:デフォルトの名無しさん [2007/05/24(木) 13:15:33 ] あとWM_DESTROYは反応ありましたがウィンドウが閉じたあとでした
206 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:24:39 ] sdi/MDIでeditビューが基本 最初からそういう風に動作するようになってる
207 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:37:57 ] >>205 まあいろいろ試してあちこちにハンドラ置きまくってみればいろいろわかることもある。
208 名前:デフォルトの名無しさん [2007/05/24(木) 13:40:25 ] 通りました!!CMainFrame::OnCloseでした!! ありがとうございます!
209 名前:デフォルトの名無しさん [2007/05/24(木) 16:34:45 ] 自作ダイアログ表示させようとしたら 自分でつけたコントロールのほかに TODO: コントロールをここに置く のテキストボックスと OKとキャンセルボタンがついてごっちゃになってました Jisakudlg dlg(this); dlg.DoModal(); なぜなのか教えてください
210 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 16:47:48 ] >>209 ダイアログの選択したパーツを整列するボタン押したんじゃないの?
211 名前:デフォルトの名無しさん [2007/05/24(木) 16:52:44 ] すいませんよくわからないですけどhtmlが入ってたみたいで 作り直したらいけました
212 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:34:23 ] 可変個引数の簡単な使い方(できれば、va_arg,va_end,va_startを使わない)を教えてください。 やりたいことは、下記のようにprintf系の関数に引数をそのまま渡したいのです。 void printfWithHeader(char *str, ...) { char buf[1000] = "Header:"; strcat(buf,str); printf(char *str, ...); } 環境は、Visual Studio 2003です。 皆様、お願いいたします。
213 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:53:23 ] VCというか普通のCの質問だろ そんなことをわざわざVCスレで質問する意味がわからん
214 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:57:12 ] できません 規約も護れないやつぁ帰れ
215 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:00:07 ] vprintf 系を使えよ・・・。
216 名前:デフォルトの名無しさん mailto:age [2007/05/25(金) 00:06:50 ] Visual Studio.net2003を使っているのですが、 UTF-8のソースを扱うにはどうすればいいのでしょうか。 コンパイルはできるのですが、日本語の表示ができません。