[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 04/29 15:56 / Filesize : 181 KB / Number-of Response : 740
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part31



1 名前:デフォルトの名無しさん [2008/07/31(木) 18:02:28 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。

218 名前:デフォルトの名無しさん [2008/08/20(水) 20:57:37 ]
Visual Studio2003でWindowsプログラムを作ってるんですが、
よくバグってメモリリークしたり、既に解放済みのアドレスを解放したりしてます。
そういうのって、PCに悪影響は無いんでしょうか?

219 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:11:17 ]
悪影響はあります

220 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:28:19 ]
>>217
最初から入ってたのは2005。
今日気づいたら2008がインストールされてた。
まぁ気にしないことにする。

221 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:35:34 ]
>>220だけど自己解決。
BUFFALOの
ttp://buffalo.jp/products/catalog/multimedia/chideji/streamtest.html
をインストールしたときに一緒についてきたみたい

222 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:02:47 ]
>>220
気付いたらってどういう意味だおいw


223 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 23:41:28 ]
>>222
もう放っとこうぜ

>>218
OSがうまくやってくれる、たぶん

224 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:36:39 ]
ちょっとよろしいでしょうか?
MFCを勉強しようと思って
www.kumei.ne.jp/c_lang/mfc/mfc_01.htm
のページのコードをコンパイルしてみて
うごいたのですが
プロジェクトの設定は「MFCを使用しない」に
なっていても問題ないみたいなのです。
MFCを使っているのに「MFCを使用しない」でよいのでしょうか?

225 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 13:48:07 ]
>>224
そんな設定どこにあった?
基本的にMFCを使うかどうかはヘッダのincludeとリンクするライブラリで決まる。

226 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:05:37 ]
>>225
なるほど。MFCを使用するかしないかを変更することによって
リンクするライブラリやコード生成のオプションが変わるみたいです。
なのでMFCを使用するかしないかの設定はあくまで
テンプレートということですね。
やっぱウィザードに頼っているとだめっすね。



227 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:16:49 ]
やべー
なんかMFCマスターした気がする

228 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:19:55 ]
おめでとう

229 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:26:17 ]
ありがとう

230 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:38:50 ]
オナニーマスター黒沢

231 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:57:30 ]
fatalita.sakura.ne.jp/3DLib/Ref/_T/
にCStringはマルチスレッドに対応してないって書いてあるんだけど
マジで?
やべーじゃん。

232 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 15:43:32 ]
>STLのstring型やwstring型は利便性においてはCString型にあるマルチバイトとユニコードの相互変換機能が無い分劣りますが、
>スレッドセーフである為classやtypedef内の変数に宣言するのに向いています。
>マルチスレッドで文字列を扱う際にはstring型かwstring型を使いましょう。

大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
ttp://msdn.microsoft.com/ja-jp/library/h14y172e.aspx

233 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 15:47:26 ]
なーんだ

234 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 15:48:29 ]
そして、VC++のstd::stringはどうかというと、こうなっている。
msdn.microsoft.com/ja-jp/library/c9ceah3b.aspx
ちゃんとやらないとだめだという点でCStringと互角。

235 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:32:26 ]
charに0〜255の数値を設定することはできるようですが
char[]にintやfloat等の数値を設定したり取得するにはどうすればいいですか?

236 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:39:53 ]
union使うかビットシフトかキャストで。
目的による。



237 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 20:50:24 ]
型について学び直せ。

238 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 21:13:58 ]
文字列として受け取って変換するとかの話?

239 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 23:59:01 ]
>>236

int i=1234;
char ic[50];
ic = (char[50])i;

こうですか?
キャストできませんでした

240 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 00:28:12 ]
一体何がしたいんだ

241 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 01:03:46 ]
冗談きつすぎるだろこれは…

242 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 09:30:00 ]
int型をchar型に入れなきゃならない理由を述べよ。

243 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 09:46:01 ]
>>239
あえてそういう風にキャストしたいのなら、例えば・・・
*(int *)&ic[0] = i;
とか

244 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 10:00:39 ]
&と[0]は説明のためにあえて入れただけでなくてもいける

245 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 10:10:37 ]
memcpyでいいじゃん

246 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:43:37 ]
>>242
ネットでデータ送るときに、パケットサイズを固定長にしたいときとか



247 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:54:16 ]
>>243
ありがとうございます。 下記のようにしたところ

int i=256;
char ic[50];
*(int *)&ic[0] = i;

char[]の最初の4バイトにそれらしい値が入るようになりました
int=32bit char=8bit なので期待通りの結果が得られてる ような気がします
これはcharの参照をintのポインタのポインタにキャストしてるんでしょうか?
char[]に入れることはできましたがintに戻すにはどうすればいいかわからんので
もっと勉強が必要なようです ありがとうございました

248 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:34:37 ]
C++を仕事で扱い始めて自宅でも勉強したいと思っています。

そこで質問なのですがVISUAL STADIOの学生用の安いものとそうでないものとの間で機能に差はありますか?

249 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:46:05 ]
>>248
C++の勉強よりも、英語を始めとした一般常識を身につけることをこそ、お勧めします。

250 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:12:06 ]
>>248
仕事してるんじゃないのか?
なで学生用なんだ
経費で落とせないのか?

251 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:29:10 ]
EEならフリーで学生じゃなくても手に入れられます。

252 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 15:53:05 ]
EE(笑)

253 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 16:01:34 ]
っGCC/G++/MINGW

254 名前:248 mailto:sage [2008/08/24(日) 19:08:08 ]
愚かなのでわかりません(´・ω・`)

あくまで個人で勉強したいので…

255 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:09:08 ]
gcc makefileのあたりからじっくり、やったほうがいい腕になるよー

256 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:16:22 ]
>>254
Visual Studio 2008のAcademicはProfessionalと同じ。
だから、同じのが欲しければProfessionalを買え。
違うのがほしければそれ以外を選べ。



257 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 22:54:44 ]
Visual Studio Express Edition でググれ

と一言書いてやれば済むのに
おまえらほんとに卑屈だな


258 名前:248 mailto:sage [2008/08/25(月) 06:30:55 ]
>>256
>>257
ありがとうございます。

259 名前:デフォルトの名無しさん [2008/08/25(月) 12:12:39 ]
質問させてください・・・
www.geocities.jp/ky_webid/win32c/010.html
このページの、
・最初にクリックした点から、次にクリックした点までを結ぶ直線を描くプログラムを作って下さい。
という例題は、どの様に書いたらいいのでしょうか?
if文を使うのかと思ったのですが、頭が悪くてswitch文とうまくあわせられません・・・
大変申し訳ありませんが、どなたか教えてもらえないでしょうか?もうだめぽ・・・><


260 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 12:17:57 ]
>>259
そのページを読んでいるのだから直線を描画するプログラムは作れるよね?
そのページの前提としてクリックした座標を取得するプログラムも作れるよね?
後は組み合わせるだけだから頭の良し悪しは関係ない。

261 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:47:46 ]
dllのインクルードというかリンクの仕方を教えてください

262 名前:デフォルトの名無しさん [2008/08/26(火) 00:52:05 ]
久々にVC++(2008)を使っているんだけど、
構造体のデータを簡単に表示とかいう拡張機能
できたりしていない? マネージドじゃない状態で。

PHPとかPerlとかやってるとさ、print_r(オブジェクト)で
オブジェクトのプロパティとか値がずらずら表示されて便利なんだよね。

標準のC++にないのはわかる。デバッグ用にそういう拡張
されてないかなぁと。

デバッガみれ? それしかないかな?

263 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:05:18 ]
C++はイントロスペクティブでないから無理ぽ
ってSteve Yeggeが要ってた。

pdb漁ってBinaryHackするとかしか思い浮かばないヨ

264 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:09:16 ]
プログラム中なら、hoge.(ココでCTRL+SPACE)
デヴァグ中なら、ローカル変数とかそういうの。

それ以外は知らん。

265 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 09:41:11 ]
>>261
そのDLLに対応したインポートライブラリとリンクするか
実行時にAPIでロードして呼び出す。
インポートライブラリはDLL作成時にできるが、
DLLからLIB.EXE等を使って作ることもできる。

266 名前:259 [2008/08/26(火) 14:17:55 ]
すみません・・・マジで悪いみたいですオレは理解力がなさ過ぎる・・・
上記みたいな感じでいけるかと思ったんですが、error C2196: case の値 '513' は既に使用されています。
と出て動きません・・・ボタンクリックの1回目と2回目を分けるには、どげんしたらいいんでしょうか・・・
プログラム分けてコピペさせていただきます・・・
>>260
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hDC;
PAINTSTRUCT ps;
int x[2] = {0,0};
int y[2] = {0,0};

switch(msg)
{
case WM_LBUTTONDOWN:
x[0] = LOWORD(lp);
y[0] = HIWORD(lp);
return 0;

case WM_LBUTTONDOWN:
x[1] = LOWORD(lp);
y[1] = HIWORD(lp);
return 0;




267 名前:259 mailto:sage [2008/08/26(火) 14:20:35 ]

case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
MoveToEx(hDC, x[0],y[0],NULL);
LineTo(hDC, x[1], y[1]);
EndPaint(hWnd, &ps);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wp, lp);
}
すんません下記みたいな感じ、でした・・

268 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:36:45 ]
case WM_LBUTTONDOWN:が2個あるぞ。
どっちかはWM_LBUTTONUPの間違いだなんてことない?

269 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:37:46 ]
>>266
case WM_LBUTTONDOWNが2個あったら、怒られるだろう
あと、それだとx[2], y[2]が、WndProc()抜けると消滅する

static int x[2] = {0,0}; 
static int y[2] = {0,0}; 
static int index = 0;

switch(msg) 

case WM_LBUTTONDOWN: 
x[index] = LOWORD(lp); 
y[index] = HIWORD(lp); 
index = index ? 0 : 1;
return 0; 


WM_PAINTで、ボタンクリックが2回目以降のみ描画する・・・
とか、詰めなきゃいけないところは、まだあるけど
とりあえず、こんな感じでどう?


270 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:41:00 ]
それ、いつまでもindexが0だと思うんだ。

271 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:41:39 ]
と、入れ替えるのか、失礼

272 名前:デフォルトの名無しさん [2008/08/27(水) 16:34:08 ]
Visual C++ 2008 EE で、C++ではなくC言語を使うにはどうすれば良いのでしょうか

273 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:38:15 ]
ソースファイルの拡張子を.cppから.cに変える

274 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:22:17 ]
Visual C++ 2008で、フォームを複数使用しているのですが、
変数の値を他のフォームに渡すことは可能ですか?

275 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:46:46 ]
可能です。

276 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:03:05 ]
CodeBlocksでこれのVC++のコンパイル諸々を使うためにVisual C++ 2008 EEを入れたんですが
コンパイル時にkernel32.libが開けないと言われます
Visual C++ 2008 EEを標準でインストールした場合のkernel32.libの場所はどこでしょうか

C:\Program Files\Microsoft Visual Studio 9.0\VC\lib 配下あたりだと思ったのですが
そのあたり検索しても見つかりません



277 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:15:11 ]
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib

278 名前:276 mailto:sage [2008/08/27(水) 23:33:57 ]
>>277
ありがとうございます

279 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:45:12 ]
>>275
どうやって渡すのか教えて下さい

280 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 09:09:18 ]
ケースバイケース

281 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 09:30:15 ]
アンケートの質問を複数のフォームに書いて、最終的にその回答
(はい、いいえ、どちらでもない)を質問のフォームとは別の
フォームに出力したいと思っています。フォーム1の質問で集めた回答を
それぞれの変数に入れ、その値をフォームに2にも引き継ぎ、変数にはフォーム1と
フォーム2の値が入っているようにしたいのですが・・・教えていただけませんか?

282 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 09:43:53 ]
受け渡しするpublicなメソッド書くとか、プロパティにして読み書きすればいいじゃん。
普通のことなのに、何がひっかかってるのかがわからん。

283 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:23:19 ]
ご回答ありがとうございます。
プログラミングはC言語を2ヶ月ほどしか学んでいなく、
Visual C++ 2008 EEも使用して2日しか経過していない
ので分かりませんでした。publicやメソッドの意味を
調べようと思います。


284 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 11:14:08 ]
まずC++/CLIを勉強しないとな。
つか.NET使うんならC#の方がいいぞ。

285 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:55:08 ]
.netつかうならどう考えてもC#のほうが…
C++.net好んでつかってるやついるの?
いたら何がいいのか教えて欲しいくらい
C++のメリットドブにすててまで.netする意味がわからない

286 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:58:41 ]
でもC++/CLIはマジで最強だよ



287 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:04:27 ]
>>285
283のようなやつは時々現れるが、
単にC++→フォームアプリケーションでプロジェクト作っただけで、
好みではなく気付いていないだけだと思う。

288 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:42:19 ]
C#はフリーの逆アセツールでソースが丸見えなのが嫌でC++使ってまふ

289 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:52:23 ]
>>286
C++習熟してて
なおかつC#とかで.netつかってるなら
本当に最強かもしれんね

>>288
あとランタイム配布とかめんどくさいの考えると
本気で配布するソフトはあまりC#つかわないのよね
XNAのやる気のなさに絶望して近頃C++しかつかってない


290 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:53:24 ]
C++/CLIは逆汗してもソースでないの?

291 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:57:08 ]
やっぱVC++6.0が一番頭よさそうに見えるからつこてる

292 名前:デフォルトの名無しさん [2008/08/28(木) 21:27:59 ]
ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、
Debugging information for 'regsvr32.exe' cannot be found or does not match. Symbols not loaded.
Do you want to continue debugging ?
というメッセージが出ます。(開発環境は英語版のVC++9です)
Yesを選択しても、
To register a module, you must provide a binary name.
という メッセージが出て結局失敗します。
このエラーメッセージの意味は、regsvr32.exeを引数なしで呼び出したためだ
というのは調べてわかったのですが、このあとどうすればよいのかよくわかりません。
ツールの中などで、regsvr32.exeを削除するような操作が必要なのでしょうか?
regsvr32.exeはOLEコントロールを登録/解除するために使うらしい、というのも
書いてあったのですが、まったく意味がわかってません。
どうかよろしくお願いします。


293 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:42:44 ]
regsvr32.exeをデバッグしてるって
マイクロソフトの中の人ですか?

294 名前:デフォルトの名無しさん [2008/08/28(木) 23:05:59 ]
>>293
結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、
コンパイル終わって実行する前に、登録するために使うプログラムを選択しろみたいな
メッセージが出てきて、適当にデフォルトのを選択しておいたところ、292みたいな状態になって
しまいました。
ずっとLinux使ってたので、もしかしてすごく見当はずれな質問してるかもしれませんが、
いろいろ検索してもなにも引っかからなかったし、どうすればよいか、ヒントでもよいので
ください。

295 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:44:16 ]
String^ s = "A";
for( int i=0; i<26; i++ ){
〜何か操作〜
func( s );
}

こんな感じで、func()に、「A〜Z」まで文字列を渡したいのですが、どんな操作をするとスマートに出来ますでしょうか?

296 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:56:27 ]
func(static_cast<wchar_t>(L'A' + i).ToString());はどう?

iの使い道がほかになければ、こういうループにするという手もある。
マジックナンバー26が消えるのがいい(もっとも、'Z' - 'A'でも消せるけど)。
for ( wchar_t i = L'A'; i<='Z'; i++ ) {
func( i.ToString() );
}




297 名前:295 mailto:sage [2008/08/29(金) 04:19:47 ]
他にも使用していたので、前者を使わせてもらいました。
ありがとうございます。

298 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:04:43 ]
>>292
>ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、

>>294
>結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、

どっちなんだ。

299 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:20:27 ]
ダイアログボックスでボタン配置したときは
プロパティからデフォルトボタンに設定できるけど
CreateWindowで配置したボタンを
デフォルトボタンにするにはどうしたらいいですか?

300 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:30:13 ]
作った後?
作るときなら、BS_DEFPUSHBUTTON

301 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:43:58 ]
>>300
作ったあとに
デフォルトボタンにしたり、しなかったり したいです

302 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:14:06 ]
あとでスタイル変えるのは SetWindowLongでできるけど、
どうなるかはわからん、他のボタンのDEFも外さないと無理かも?
見た目はDM_SETDEFID送ればいいみたいだけど。

303 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:18:01 ]
BM_SETSTYLE でもいけた。まあいろいろやってみ

304 名前:デフォルトの名無しさん [2008/08/29(金) 19:28:50 ]
>>298
すいません。
結構大きなライブラリのソースをダウンロードしてきて、それをコンパイルした後、付属の
サンプルコード(こいつは結構小さい普通のプログラム)をコンパイルしようとしたんです。
なんでどっちも本当です。
結局まだわからないので、スタティックライブラリを自分で作って勉強してみてます。
でもregsvr32.exeなんて使わないっぽい。

スタティックなライブラリをデバックするときって、regsvr32.exeを使いますか?
手順としてはこんな感じ。
(1)ライブラリ作成(名前はStaticLibrary.libとします)
(2)regsvr32.exe \i StaticLibrary.lib
(3)このライブラリをつかうサンプルプログラムを作成してデバッグ。

305 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:32:48 ]
それはない。
regsver32の対象になるのはDLLだけ。

306 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:29:23 ]
>>304
exeのプロジェクトのプロパティの「デバッグ」の「コマンド」がregsvr32になってるのかな。
空にしてok押してみて。”$(TargetPath)”が入ると思う。

新しいプロジェクトを作るときのウィザードで選択を間違えたのかな。



307 名前:デフォルトの名無しさん [2008/08/30(土) 01:12:35 ]
>>304
ありがとうございます。おっしゃるとおりになってました。
そこを空にして、追加のインクルードパスにboostを追加して、F7でビルドするとビルドできました。
その後、同じソリューションの中のほかのサンプルプログラムをコンパイルするごとに追加の
インクルードパスにboostを追加する、という作業が必要だったのですが、これはしょうがないですか?
どこかで設定すれば同じソリューション内なら一度の追加ですむとか、そういうことはできないですか?


308 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 12:47:12 ]
 VS2008を使っているのですが、newで確保したクラスの動的配列の内容を
デバッガで全て表示させるにはどうしたらよいのでしょうか?
STLのstringやvectorだと上手く表示されているのですが、何かいい方法があるのしょうか?
どなたか教えて下さい。


309 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 15:57:21 ]
変数の後ろに、カンマと数字で

310 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 13:09:13 ]
>>309
 最初何のことだか分からなかったのですが、ググって見てようやく分かりました。
御回答どうもありがとうございました。
一応他の方の参考になるかもしれないのでリンク張っておきます。
ttp://support.microsoft.com/kb/198953/ja

 他にもautoexp.datを使う方法もあるみたいですね。
ttp://www.cycleof5th.com/tips/index.php?date=2007-05-13
ttp://blogs.wankuma.com/melt/archive/2007/10/01/98927.aspx


311 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:21:03 ]
某動画を見ながらVC++2008をインストールしたのですが
新規作成-プロジェクトの
「VisualC++」の「空のプロジェクト」実行で
ソース、リソース、ヘッダーファイルが出なく(組み込まれなく?)なりました
どこかさわってしまったらしく元に戻せません

超初歩的だと思いますが宜しくお願いします。


312 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:41:32 ]
「空のプロジェクト」なんだから、そういうのが無くて当たり前。

313 名前:311 mailto:sage [2008/08/31(日) 18:34:37 ]
www.nicovideo.jp/watch/sm4250927
この動画の1’28”くらいのところなんですが
空のプロジェクトなのに3ファイルが組み込まれてるんです

なにか設定を変えているとかでしょうか?

314 名前:311 mailto:sage [2008/08/31(日) 18:43:15 ]
連投すいません
他の説明動画で解決できました。
前の動画は編集されてたのかな?

315 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:11:35 ]
こんな動画まであるのか。
ホントになんでもあるなw

316 名前:299 mailto:sage [2008/08/31(日) 23:41:36 ]
>>300
BS_DEFPUSHBUTTON も設定しましたがリターンを押しても反応しません

>>302
DM_SETDEFIDを
SendMessage(ウインドウのハンドル, DM_SETDEFID, (WPARAM)ボタンのID, (LPARAM)0 );
で送ってもデフォルトになってないような?

>>303
SendMessage(ウインドウのハンドル,BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON,(LPARAM)0);
にしてみましたがやはりだめです

配置してるボタンはウインドウ上に1つだけです
ひょっとしてデフォルトボタンはダイアログでしか設定できないのでしょうか?



317 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:45:49 ]
Enter打つとボタンが押されたことになるって挙動が欲しいなら、
ボタンのIDをIDOKにして、メッセージループにIsDlgMessageを組み込むじゃなかったっけ。

318 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:55:14 ]
テキストボックスに入力中にリターン押したときに
ある関数を実行したいんですが
ダイアログのときはデフォルトボタンで代用してました
VBとかでいうところのkeydownイベントのときにキーコードがリターンか調べて
リターンなら処理をする みたいな挙動がほしいです

IsDlgMessageでググったら日本語のページがひとつもないといふ

319 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 01:55:10 ]
じゃあ、IsDialogMessageでググってみて

320 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 04:19:22 ]
>>315
そして、
本と同じで、こういう動画も初学者向であふれるんだろなw

321 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 17:48:26 ]
>>319
ググったけどよくわからんかった
モードレスダイアログにしてIDOK受けるみたいな感じに解釈したんだけど
コントロールのサブクラス化のほうが理解しやすかったんでそっちにしました

ありがとうございました

322 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:49:31 ]
すいません。
これからVisual C++ 6.0を勉強をしようと思っているんですが、
初心者向きのわかりやすい参考書があれば教えて下さい。
よろしくお願いします。

323 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:12:44 ]
>>322
本題(参考書の紹介)にレスできなくてごめん。

これから勉強するのに、なんでvc6なのだ?
vc6はc++の規格が固まる前のものでオススメでない。
vc9(vs2008)でいいじゃないか。

324 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:15:53 ]
VC6使ってるけどC++の規格で困ったことなんかないな

325 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:21:02 ]
>>323
そうなんですか?
しかし会社で使用する開発環境が6.0らしいんですが・・・
vs2008はOSが2000なのでインストール出来ませんが、
vs2005ならインストールしています。
vs2005を勉強すればvs6.0にも応用出来るのでしょうか?
そういうことでしたらvs2005で勉強してみます。

326 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:24:29 ]
会社で使うという事情なら6.0にしておけ。



327 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:25:37 ]
ちゃんとライセンスがあるのか心配なレスだなしかしw

328 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:33:29 ]
そうですね。
やはり6.0を勉強します。
話は戻りますが、初心者向きのわかりやすい参考書が
あれば教えて下さい。

329 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:40:02 ]
VCの場合はCかC++がある程度使えないと初心者以前なので
勉強してから出直して来てください。

330 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:44:23 ]
山本信雄のシリーズは入りとしては最高

でも、Cがある程度使えなかったらわかりません

>>329
VC++とC++ってそこまで違うものですか?

331 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:53:29 ]
C++はプログラミング言語
VC++はマイクロソフト社製の開発環境

332 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:59:50 ]
そっか

VC++はVSのC++コンパイラ群のことだと思ってた

333 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:08:30 ]
ライセンスなんてそんなに(・ε・)キニシナイ!!


334 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:12:31 ]
libviscawinの使い方教えてください
ていうかどこで聞けばいいですか?

335 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:19:35 ]
VC++単体パッケージにはコンパイラしかついてないのか

336 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:59:15 ]
>>332
いやまあその理解でもあまり困らないと思う。



337 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:25:10 ]
まぁ、VC6と言うとMFCを使えることを想定されるな。

338 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:11:16 ]
win32だったらprograming windows (ペゾルド) C言語を知っている前提
MFCだったら標準口座MFC6.0(シルト) C++のクラスぐらいまで知っている前提

339 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:41:32 ]
main( )で始まるプログラムとMFC使ったプログラムは勝手が違うな


340 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:35:06 ]
ポインタをヘッダファイルで定義して、複数のソースから使用します。
そこでヘッダ宣言時に"_declspec(selectany)"で書くと、リンカエラーもなくビルドできます。
この"_declspec(selectany)"とは、どういったものなのでしょうか?

341 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:52:49 ]
>>340
その通りの効果。リンク時に重複した定義を許し、1つにまとめる。
msdn.microsoft.com/en-us/library/5tkz6s71.aspx

342 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:03:54 ]
WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、

343 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:06:21 ]
途中で送信してしまいまして、すいません。

WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、白黒それぞれ描画するか判断するのか、

描画が必要ない領域を塗り潰しても、結局システムは何もしないと思って
両方とりあえず描画するのか、どちらが一般的なんでしょうか

344 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:55:55 ]
領域を指定する

345 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:16:31 ]
クライアントエリアの中は全部描く
クリッピングは速度のためにある

346 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:23:30 ]
昨日勉強始めました。

LINK : fatal error LNK1181: 入力ファイル 'object\library.obj' を開けません。

というエラーが出るのですがlibrary.objを検索してもHDにはありませんし、
解決するようなサイトが見つかりませんでした。

なにか解決方法ありましたらお願いします。

環境はVisualC++2008 Expressで、コードはチュートリアル用にダウンロードしたもの。
元のコードはVisualC++6で書かれたようです。



347 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:40:55 ]
それ理解できないなら別のことやった方がいい

348 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:08:18 ]
どっかでひろってきたサンプルのコンパイル方法か

349 名前:デフォルトの名無しさん [2008/09/07(日) 21:02:29 ]
>>273について誰か教えてください。よく理解できません。


350 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:07:28 ]
>>349
d.hatena.ne.jp/keyword/%A5%B0%A5%B0%A5%EC%A5%AB%A5%B9

351 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:11:23 ]
特に指定がない場合はコンパイラが拡張子見てどっちか判断する

352 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 23:33:38 ]
授業でbccを使って書いたプログラムのソース(問題.c)をVisual C++で流用しようとしたら
1>cl : コマンド ライン error D8045 : C ファイル '.\問題.c' を /clr オプションと共にコンパイルできません
というエラーが出てコンパイルが完了しません。どうしたらよいでしょうか?

353 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 23:48:54 ]
プロジェクト作るときにWin32を選ぶ。
CLR選んだらCは使えない

354 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:02:52 ]
>>353
ありがとうございます。
しかし今度は
「プリコンパイル ヘッダー ファイルが旧バージョンのコンパイラで作成されています。また、C++ のプリコンパイル済みヘッダー ファイルを C で使用しています (その逆も考えられます)。」
というエラーがありました。

355 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:10:12 ]
>>354
空のプロジェクト作って追加するのがいいと思うけど、
cppのプロジェクト作って追加したのなら、ソリューションエクスプローラーのとこで
該当ファイル右クリックしてプロパティ出して、C/C++のプリコンパイルヘッダーの項目のとこで
プリコンパイル済みヘッダーを使用しない、にする。
あるいはプロジェクト全体でこの設定をしてもいい。

356 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:24:59 ]
>>355
ありがとうございます。
何とか上手く行きましたが、最後にscanfの宣言をしてくださいというエラーが出ました。
これはどういうことでしょうか?



357 名前:356 mailto:sage [2008/09/08(月) 00:25:56 ]
正しくは「'scanf' の宣言を確認してください。」でした。

358 名前:356 mailto:sage [2008/09/08(月) 00:33:44 ]
すみません。自己解決しました。
Visual C++2005からの仕様変更が原因だったみたいですね。。

お騒がせしました。長らくのお付き合いありがとうございました

359 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:34:45 ]
それは2005以降出るよ。
詳しくは、そのエラーの行でF1押して出たページの「CRT のセキュリティ強化」を読むといい。
その関数使う事が決まってるなら無視してもいいし、気になるならヘルプに出なくする方法も書いてある。
scanf以外にも、printf系、str〜系で出る。

360 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 01:34:31 ]
移植性?なんだそれ?そんなの知らん!
俺はMSと心中するんだと言う気持ちならscanf_sなど_s系が付いた関数を使えば良いよ

361 名前:デフォルトの名無しさん [2008/09/08(月) 10:26:31 ]
すんません
VC++6.0(MFC)でテキストエディタ作れと言われたのですが、
最初の最初でつまづいてます。
プロジェクト新規作成→MFC→SDIアプリ→→で、初期のスケルトン作成。

その後ですが、IDR_MAINFRAMEのフォームの白い部分(メニューバーを除く全部
の領域)を全体的にテキスト入力欄にするにはどう操作すればいいですか?

ダイアログベースのプログラムならテキストボックス置けばいいだけですが、
SDIアプリケーションの場合はどうするのでしょうか?

362 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 10:32:15 ]
>>361
MFCだといくつかのやり方があって、どういう点を学習してるかによるが、、、
CViewをCEditViewに替えるだけでいけるけど、、、

Editコントロールを貼り付けるのなら、メンバーにCEditでも置いて
ウィンドウのOnCreateで一緒にCreateしてやって、OnSize時に
CEditをクライアントエリアと同じ大きさにしてやればいい。

363 名前:デフォルトの名無しさん [2008/09/08(月) 12:04:29 ]
>>362
ありがとうございます。
なんとか後者の方法でエディットボックス設置はできました。

あとは
・起動時にウィンドウのクライアント領域と合わせる
・リサイズ時にも合わせる

のようにしたいですが、ウィンドウサイズの初期値設定、クライアント領域の現在値の取得などはどのようにすれば良いですか?



364 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:10:38 ]
クライアントのサイズはGetClientRect()というのがあるけど、
WM_SIZEのハンドラ、OnSizeの引数に幅と高さもあるから、それそのまま使えばいい。
起動時にリサイズ(WM?SIZE)も来るから、起動時のことは考えなくてもいい。

365 名前:デフォルトの名無しさん [2008/09/08(月) 16:42:03 ]
>>364
ありがとうございます。
試行錯誤した結果、やはりCEditViewにすることにしました。

www.vcppclub.com/kouza/nextstep1/mdieditor1.html
ここを見たら1行も書かずに、読み込み/保存機能はできてしまったのですが、疑問が。

ファイル読み込みのダイアログを出す→ユーザーが選択したファイルを読み込む→テキストエリアに表示
保存も同様。

これらに必要な処理がどこにも書かれていないような気がするのですが。

調べていた段階で、メンバ関数 OnFileOpen() を作成し、
GetOpenFileName();でダイアログを出し、
CFile型に読み込む手順が必要そうだったのですが、
自動生成されたソースではどこにも書かれていません。
にもかかわらず読み書きできるのが疑問です。
(サイトのサンプルはMDIですが、SDIでもほとんど同じのようです)

366 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:33:51 ]
その辺はMFCとDocumentViewアーキテクチャの話だからなあ。
CWinAppからCDocument、CEditViewの操作はMFCの中に含まれている。
もちろん、自分で変更することも可能。



367 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:35:50 ]
派生した部分しか見てないんだろ

368 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:37:06 ]
オリビア派生

369 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:47:07 ]
VisualStudioのエディタのタブや改行の記号表示について質問があります.
デフォルトの表示を変更したいのですがどのようにすればよいのでしょうか?

具体的には改行文字を$にタブ文字を>---という風に変更したいのですが

370 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:11:23 ]
ひとりごとです

371 名前:デフォルトの名無しさん [2008/09/09(火) 10:49:53 ]
CEditViewでの、現在表示されている文字列を格納しているメンバは何ですか?
入力されたものを文字列型にコピーして保存やらなにやらいろいろやりたいのですが。
逆に文字列型に格納された文字列を表示する方法も。

そういったテキストバッファの操作のしかたがいまいち分からないです

372 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:00:09 ]
エディットコントロール自身がバッファを持ってる
普通は直接バッファいじらないでメンバ関数使ってアクセスする

373 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:18:51 ]
普通はCDocumentの派生クラスに自分でデータ構造作ってビューはその表示方法書いたりするけど
CEditViewは特殊だからな。GetEditCtrl()でCEditのインスタンスが取れるのでそれを操作すればいい。

374 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:28:37 ]
typedef struct tagTest {
unsigned int x :1;
} Test;

このようなコードを見かけたのですが、「:1」は何を意味しているのでしょうか。

375 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:31:25 ]
>>374
ビットフィールド

376 名前:374 mailto:sage [2008/09/09(火) 11:43:07 ]
素早い回答、ありがとうございました。



377 名前:デフォルトの名無しさん [2008/09/09(火) 13:53:02 ]
>>372-373
なるほど。
CEditのメンバ関数見るとそれらしいものがあるようですね。
しかし、GetLine()のように、行ごとに取得してくる関数はあるみたいですが、
「とりあえず改行も含めて全体をCStringにコピー」するようなものは見当たらないです。

全部の行を走査してコピーする部分は自分で作成しないとダメですか?

378 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:02:47 ]
全取得はGetWindowText()
これはCEditでも、CEditViewでも使える。

379 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:06:23 ]
>>377
MSDNを見るときは、継承元のクラスのメンバも見よう。
GetWindowText()で取れるんじゃね?

って書いてたら先を越されたw

380 名前:デフォルトの名無しさん [2008/09/09(火) 14:28:49 ]
>>378-379
おぉ ありがとうございます!
MSDNの見かたを訓練するようにします。

ところでもうひとつ質問が。
MainFrameのメニュー選択によりそれらの動作をさせたいのですが、

void CMainFrame::On????(){

}
↑ここの記述で、
MainFrameのほうからViewを操作するにはどのようにすれば良いですか?
C(アプリ名)Viewクラスのインスタンス名が分かれば「名前.関数名」のような形
で呼び出せると考えたのですが、
どこにも宣言部分が見当たらないようです。

381 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:12:49 ]
>>380
えーと、SDIだったよな?
CFrameWnd::GetActiveView()でどうか。

382 名前:デフォルトの名無しさん [2008/09/09(火) 15:24:53 ]
>>381
CViewのポインタが帰ってくるようで、継承して作られたC???Viewの関数は使えないようです。

CFrameWnd::GetActiveView()->関数();

このようにしてもビルドが通らないです。

383 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:32:12 ]
>>382
GetWindowtext()が見つけられないようだったから、わざわざCFrameWnd::GetActiveView()の
書き方にしたのに、そしたらこれかよ・・・
CなんたらEditView* pView = (CなんたらEditView*)GetActiveView();
でいいだろ、ちょっとは考えろよ。

384 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:36:11 ]
メニューから直接よべる

385 名前:デフォルトの名無しさん [2008/09/09(火) 19:30:54 ]
>>383
未熟ですみませぬ・・・
おかげさまで思った通りのものができました。

386 名前:デフォルトの名無しさん [2008/09/10(水) 11:58:44 ]
お世話になります。VC++6でダイヤログベースのプログラムを作っています。
ダイヤログにボタンを新設し、Classウィザードを使ってON_BN_CLICKEDメッセージ関数を使って
ボタンがおされた事はプログラムで取得できるようにできました。

ボタンを何秒間押したかを調べたいのですが、ボタンが離されたメッセージがなく、
どうやって作ったらいいかわかりません。
どのようなメッセージを使えばいいのでしょうか?
よろしくお願いいたします。



387 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:04:58 ]
CButtonをサブクラス化して自分でLBUTTONDOWNとLBUTTONUPの時刻の差を取るしかないんじゃないかなあ

388 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:32:58 ]
ボタンのイベントは押した時じゃなくて、離した時に発生する気がしたけど

389 名前:デフォルトの名無しさん [2008/09/10(水) 15:12:46 ]
数日前にVC++ 2008 Express Editionを使い始めた初心者です。
ttp://homepage3.nifty.com/ishidate/
を参考にWindowsフォームアプリケーションのテンプレで作成したのですが、
一度目のビルドは普通に実行されて表示されるものの、少しでも書き換えた後(内容に一切変化がない場合でも)
以降ビルドを行おうとするとexeファイルが見つからないと表示され、エラーが発生します。
CやC++は以前から触れていたのですが、VisualStudioの操作に関しては
いまいち分からないので原因が分かりません。
どなたか分かる方は折られるでしょうか?よろしくお願いします。

390 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:16:29 ]
なんかおかしいね。
PCの時計はくるってない?

391 名前:デフォルトの名無しさん [2008/09/10(水) 16:59:39 ]
EXE だけど DLL としても使えるバイナリってどうやって作ればいいですか?

392 名前:デフォルトの名無しさん [2008/09/10(水) 18:07:37 ]
VC6で、2003以降のXmldocumentクラスに相当するものってありますか?

393 名前:391 mailto:sage [2008/09/10(水) 19:31:29 ]
自己解決しました。とりあえず
__declspec(dllexport)
付けて宣言しとけばEXEでビルドしてもエクスポートされるんですね。

394 名前:デフォルトの名無しさん [2008/09/10(水) 19:42:43 ]
VC++ 2008 Proを使っています。
デバッグでプログラムを実行させると出力欄に、
「'System.NullReferenceException' の初回例外が ImageRecognize.exe で発生しました。」
と表示されるのですが、これがどの行で発生したかを調べるにはどのようにしたらいいでしょうか?
どなたか教えていただけると嬉しいです _ _

395 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:45:00 ]
ヌルポ

396 名前:394 mailto:sage [2008/09/10(水) 19:47:11 ]
すみません、メニューのデバッグ→例外を設定することで出来るようになりました。
お騒がせいたしました。



397 名前:デフォルトの名無しさん [2008/09/11(木) 01:08:30 ]
CreateProcessで新規のルートプロセスを発行した後、
親プロセスはWaitForSingleObject(hHandle, 0)を実行して
即終了させようと思っています。(UNIXのデーモンプロセス生成のような感じ)
ここでWaitForSingleObject()のタイムアウト時間を0秒に設定すると
何か問題あるでしょうか?

398 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:20:13 ]
そのwaitに一体何の意味が?

399 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 01:25:50 ]
>>398
形式的に入れた方がいいのかと思ったのですが、
もしかして即終了させるならば必要ないですか?

400 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 08:08:02 ]
何のために待つのか考えろよ

401 名前:デフォルトの名無しさん [2008/09/11(木) 09:40:54 ]
VC++ 6.0で、
xmlファイルを解析して読み込む/書き込む仕組みを作らなくてはならないのです
が、手探りで困っております。

検索してみると、VC2003以降になればXmldocumentクラスなるものが使えるよう
ですが、
VC6.0ではmsxml.hを使わなくてはならないようです。
これについての資料やサンプルがweb上にあまり無くて困っています。

また、xercesのライブラリを使う手段も打診されているのですが、
これについてはどのようにすれば良いでしょうか?
ダウンロードしても構成ファイルが大量にあり、これらをどう組み込むのが検討
が付きません。
また、VC6用のサンプルのプロジェクトファイルは同梱されていたものの、なぜ
かビルドが通らないようです。
こちらから入手したものです。
xerces.apache.org/xerces-c/

次レスに続きます

402 名前:デフォルトの名無しさん [2008/09/11(木) 09:42:05 ]
xerces-all.dswを開いてビルドすると
エラー内容
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2039: 'InterlockedCompareExchangePointer' : '`global
namespace'' のメンバではありません。
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2065: 'InterlockedCompareExchangePointer' : 定義されていない識
別子です。
cl.exe の実行エラー

外部のライブラリを使用するプログラムを作ったことが無いので、そういった部
分の基本から教えていただけると幸いです。

403 名前:デフォルトの名無しさん [2008/09/11(木) 09:51:27 ]
>>401
VC2008とboostいれようぜ。
そしたら簡単。serializationとか

404 名前:デフォルトの名無しさん [2008/09/11(木) 09:55:05 ]
VC2008が無料で2005より軽いことをしらんのか?

405 名前:401 [2008/09/11(木) 09:57:19 ]
すんません
業務で、VC6と指定なのです。

406 名前:デフォルトの名無しさん [2008/09/11(木) 10:02:12 ]
この辺参照。

これ使うとXMLの扱いがとっても簡単になりますね
基本的にはシリアライズしたいクラスのメンバにserialize関数を追加するだけです
d.hatena.ne.jp/faith_and_brave/20070809/1186672741
d.hatena.ne.jp/cass_src/20070730






407 名前:デフォルトの名無しさん [2008/09/11(木) 10:04:40 ]
>>405
では、boostをいれれば? コンパイルできるかは知らないけれど。
でも、msxml.hを使うのが普通ですね。標準機能なので。

408 名前:デフォルトの名無しさん [2008/09/11(木) 10:18:04 ]
ありがとうございます。
boostを研究してみます。

409 名前:デフォルトの名無しさん [2008/09/11(木) 10:18:40 ]
この辺にMSXMLの使い方かいてありますよ。
あとはMSのサイトで調べれば完璧じゃないですか?

www.utj.co.jp/xml/dev/dom/dxdom1_1.html
www.utj.co.jp/XML/DEV/dom/dxdom2_1.html
www.sutosoft.com/oldroom/devdiary/20020505.html
www.sutosoft.com/oldroom/devdiary/20040307.html
hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/006.html
www.s34.co.jp/cpptechdoc/article/xml/persist/

410 名前:デフォルトの名無しさん [2008/09/11(木) 10:23:01 ]
>>408
boostが動かせる(コンパイルできる) かどうかのコンパイラ別の対応表がどこかにあったのですが
忘れてしまいました。boostのホームページのどこかにあったはずです。
XMLを扱う簡単さでは、boostの方が上と思いますが
VC6の機能からなるべくはみ出ないようにするには、MSXMLと思います。

411 名前:デフォルトの名無しさん [2008/09/11(木) 11:24:48 ]
やはりVC6でビルドしようとすると、「ブロックが大きすぎてコンパイルできません」と出ます。
あきらめてmsxmlのほう使います。
詳しい資料ありがとうございました。

412 名前:デフォルトの名無しさん [2008/09/11(木) 15:42:25 ]
>>411
MSの機能以外を使って良いなら、いったんVC2008とboostのバイナリパッケージをインストールして
serializationを使ってXML操作DLLやLIBを作成してVC6でそれを利用するという手をある。
上位のライブラリをVC6で使えるかはよくわからないけど、
DLLにしてあればMinGWやBCCやVCで共通に使えるので平気と思う。

413 名前:デフォルトの名無しさん [2008/09/11(木) 15:45:08 ]
boostのバイナリパッケージはここにある。次に対応している。
Visual C++ 7.1 (Visual Studio 2003), 8.0 (Visual Studio 2005), and 9.0 (Visual Studio 2008)

www.boostpro.com/products/free

414 名前:デフォルトの名無しさん [2008/09/11(木) 17:15:00 ]

このサイトで解説している、以下の部分
www.sutosoft.com/oldroom/devdiary/20020505.html
// ●ファイルから読み込む。●
lpXMLDoc->put_async(VARIANT_FALSE);
VARIANT FilePath;
::VariantInit(&FilePath);
FilePath.vt = VT_BSTR;
V_BSTR(&FilePath) = ::SysAllocString(L"test.xml");
VARIANT_BOOL result;
lpXMLDoc->load(FilePath, &result);
::VariantClear(&FilePath);

わざわざファイル名を指定するのにVARIANT型を使うのは何故ですか?
CString型でパス名指定したりして読めれば楽なのですが・・・
実行ファイルと同じフォルダにtest.xmlを置いても、読み込みできていないよう
です。
::VariantInit〜::VariantClearで囲うことの意味、
V_BSTR(&FilePath) と、一見関数に見えるものに代入演算子が付いている意味など、
VARIANT型を扱う処理が全体的に分からず困ってます。

415 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:00:39 ]
DOM(Document Object Model)、COM(Component Object Model)の約束なのでしかたがないのでは?


Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。
特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。
この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。
COMコンポーネントは開発に使った言語やコンポーネントのある場所などに拠らず、
どの言語からでも、どこからでも利用することができる。
ネットワークを通じて別のコンピュータ上にあるCOMコンポーネントを利用する技術をDCOMと言う。
これらの技術はWindowsだけでなく、UNIXやMac OSにも移植されている。
コンポーネント開発が楽にできるよう改良された次世代のCOM+の開発が進んでおり、
Windows DNAの中核技術として期待されている。
bizex.goo.ne.jp/tool/it/8_77/209/


416 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:01:57 ]
そういうのはVBで扱う前提だからVCだとめんどくさい



417 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:58:31 ]
CComVariantとか使うべき

418 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:08:34 ]
char str[20]とかいうのがあって
strが"abcd%EFG"だったときに
%以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?


419 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:31:26 ]
>>414
#importでのraw_interface_onlyやめろ。
それを無くすと、高水準なラッパを作ってくれてめちゃくちゃ楽になる。
例えば、loadメソッドならVARIANTやBSTRを使わず文字列を直接渡せるようになる。

420 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:32:59 ]
size_t length = strlen(str);
char * rp = str; // read
char * wp = str; // write

while (rp != '\0') {



421 名前:デフォルトの名無しさん [2008/09/12(金) 11:37:10 ]
>>419
詳しく教えてください。
#importから、raw_interface_onlyを削除しました。

しかし、あいかわらずloadメソッドではVARIANT型、VARIANT_BOOL型のふたつの
引数が要求されます。

IXMLDOMDocument* を定義してから、インスタンスを生成し、ファイル名を指定
して読み込み、ノードを指定してい読み込んでくるまでの
一連の流れを教えていただけると幸いです。

422 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:46:14 ]
初心者スレでやることとは思えない

423 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:56:30 ]
コピペ

pDoc->load(_variant_t(L"majissuka.com/NewInfo.xml"),

424 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:59:33 ]
ファイルなら絶対指定では
file:///C:/windows/test.txt
かな? test.txtでもいいとはおもう。

425 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:13:02 ]
>>418
> char str[20]とかいうのがあって
> strが"abcd%EFG"だったときに
> %以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?
>
char *p;
p = strchr(str,'%');
p++;
strcpy(str,p);

426 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:20:56 ]
これでいけたけど・・・
#include <msxml.h>
#include <comdef.h>
#include <atlbase.h>

int main(){
CoInitialize(NULL);
IXMLDOMDocument* lpXMLDoc;
CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&lpXMLDoc);
// ●ファイルから読み込む。●
VARIANT_BOOL result;
lpXMLDoc->put_async(VARIANT_FALSE);
lpXMLDoc->load(_variant_t(L"test.xml"), &result);

// ●ノード検索●
IXMLDOMNodeList* lpNodeList;
BSTR NodePath = ::SysAllocString(L"Test/Item");
lpXMLDoc->selectNodes(NodePath, &lpNodeList);
::SysFreeString(NodePath);
long lLength;
lpNodeList->get_length(&lLength);
for (int i = 0; i < lLength; i++){
IXMLDOMNode* lpItem;
lpNodeList->get_item(i, &lpItem);
BSTR str;
lpItem->get_text(&str);
USES_CONVERSION; printf("%s\n", W2A(str));
SysFreeString(str);
lpItem->Release();}
lpNodeList->Release();
lpXMLDoc->Release();
CoUninitialize();}



427 名前:デフォルトの名無しさん [2008/09/12(金) 17:59:27 ]
>>423-424,426
ありがとうございます。
やはりうまくビルドできないですが・・・
引き続き試行錯誤しつつ、XML関連のスレのほう除いてみます。


ところで、CEdit型のエディットコントロールの、それ自身のウィンドウ内での座標をゲットおよびセットする関数ってありますか?
(つまり、事後的にプログラム内で任意で位置を変更したい)
SetRect(),GetRect()だと思ったらコレはこのコントロール内での座標のことのようでした。

428 名前:デフォルトの名無しさん [2008/09/12(金) 19:02:06 ]
ふと思ったんだがCDとかDVDとかって
Diskか?
Discか?

429 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:05:27 ]
Discは光学メディア
Diskは磁器媒体

430 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:13:23 ]
CDはソニーが作ったから

431 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:21:35 ]
サンクス!
そう言う区分だったのか
ってことはCD/ DVDを「Disk」って書いちまった資料を全部直さないとか・・・


432 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:26:55 ]
ja.wikipedia.org/wiki/Universal_Disk_Format
Universal Disk Format (ユニバーサルディスクフォーマット、UDF)は光ディスク用のファイルシステムである。

433 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:46:30 ]
>Discは光学メディア
>Diskは磁器媒体
MOはどっち?

434 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:46:43 ]
e-words.jp/w/E58589E38387E382A3E382B9E382AF.html
光ディスク 【optical disk】
データの読み書きにレーザー光を利用する記憶媒体のこと。
CDやDVD、PDなどが代表的な光ディスクである。

435 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:48:37 ]
e-words.jp/w/E58589E7A381E6B097E38387E382A3E382B9E382AF.html
光磁気ディスク 【MO】
読み方 : ひかりじきディスク
別名 : Magneto-Optical disk

436 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:19:20 ]
VC2008でテキストボックスに0x01と表示するにはどうしたらいいですか?
unsigned char buf[2] ={0x01,0x02};
textBox1->Text = buf[0];

と実行したらエラーがでます。
error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : 1 番目の引数を 'unsigned char' から 'System::String ^' に変換できません。(新しい機能 ; ヘルプを参照)
1> 使用可能なユーザー定義された変換演算子がない、または
1> 演算型のボックス化された形式からターゲット型への標準変換は存在しません



437 名前:デフォルトの名無しさん [2008/09/12(金) 20:24:20 ]
>>436
unsigned char *buf[2] ={"0x01","0x02"};
textBox1->Text = buf[0];


438 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:40:21 ]
>>437
その方法でもエラーがでまます。
error C2440: '初期化中' : 'const char [5]' から 'unsigned char *' に変換できません。
Hexデータをテキストボックスに表示したいだけなのに。難しい

439 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:14:27 ]
テキストボックスに "あいう"と表示してみろ

440 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:17:46 ]
>438
テキストボックスはテキストを表示する所だから
Hexデータは表示できない

441 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:53:49 ]
基本的なことなんですけど


文字判定でスペースが入力されたら 「空白です」 と表示させたいんですけど、誰かご教授ください


442 名前:デフォルトの名無しさん [2008/09/12(金) 22:57:06 ]
C++を初めてインスコしたんですけど、
製品の登録ってなんですか?
無料ですか?


443 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:58:38 ]
有料

444 名前:デフォルトの名無しさん [2008/09/12(金) 23:00:42 ]
そうですか。

いくらですか?


445 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:09:11 ]
>>438
抜粋
private: System::Void Showbutton_Click(System::Object^ sender, System::EventArgs^ e)
{
array<System::String^>^ Numdata = {L"0x01",L"0x02",L"0x03",L"0x04"};
if(i < Numdata->Length)
this->textBox1->Text = Numdata[i];
else{
i = 0;
this->textBox1->Text = Numdata[i];
}
}
private: System::Void NextShowbutton_Click(System::Object^ sender, System::EventArgs^ e)
{
i++;
}

446 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:15:48 ]
>441
キー入力をチェックしてもいいけど
マウスで入力する場合もありえるから
入力内容が変った時のイベントでやるのが無難



447 名前:デフォルトの名無しさん [2008/09/14(日) 01:09:45 ]
Express 2005で3連休プログラマーなんだけど、

 String^ folderName;

の ^ ってなに?



448 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:26:01 ]
>>447
ハットサイン、或いは山形アクセント記号。

449 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:30:56 ]
C++/CLIのスレで聞いて来いw

450 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:42:37 ]
C++/CLIとC++は別の言語。
C++を勉強したいならVisual studioのCLRのカテゴリには手を出すな。


451 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:09:05 ]
今まで普通に使えていたのですが突然MessageBoxが使えなくなりました。

1>.\main.cpp(135) : error C3861: 'MessageBox': 識別子が見つかりませんでした

とエラーが出ます。コードは
if(MessageBox(hWnd,"あ","あ",MB_YESNO) == IDYES)
等で文字セットはマルチバイト文字です。windows.hもインクルードしてあるのですが何がいけないのでしょうか。
VS2008再インストールしても直りません。

452 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 10:32:27 ]
デフォルトはマルチバイトじゃないはずだから
いらんところいじってるだろ

453 名前:デフォルトの名無しさん [2008/09/14(日) 10:58:11 ]
MessageBoxAだとかMessageBoxWとかにしてやってみたらー(

454 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 11:41:04 ]
プロジェクトの設定にある文字セットってどういう意味なの?
あの設定によってコンパイルが通らなくなるし。

455 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:12:52 ]
マルチバイトかUnicodeか

456 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:17:03 ]
>>455
exeファイルを配布する上で、文字セットの設定が問題になるの?



457 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:24:35 ]
Unicode: NTネイティブ、9xでは原則として動かない
マルチバイト: NT/9x両方で動くけど、NTではAPI内部で変換がかかるのでオーバーヘッド有り。

458 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:10:02 ]
>>457
なるほど。参考になります。
文字コードに「設定なし」とあるけどこれは一体?

459 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:15:19 ]
いや、9xの時代から、APIはAとWの両方あったような記憶があるけど。

460 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:26:05 ]
>>458
基本的にはマルチバイトと同じ。
ただ、<tchar.h>の中の一部に、なし/マルチバイト/Unicodeの3つで切り替わるやつが存在する。
例えば_tcscpy→strcpy/_mbscpy/wcscpy。
mbs版は2バイト文字の2バイト目が欠ける事態にならないなどといった効果を持っていることが多い。

>>459
エントリポイントだけはあるが、実装されているのはごく一部の例外的存在。
msdn.microsoft.com/en-us/library/ms813063.aspx

461 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:32:09 ]
TEXT/_Tマクロをちゃんと使った参考書って少ないよな

462 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 14:49:42 ]
>>461
正直、文字列は、ワイドかマルチバイトか決めうちにして、それは使わないほうがいいんじゃないかって気がする。

463 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 17:39:00 ]
自分ひとりでやるなら勝手だろうけど
マクロ使ってない糞サンプルばらまかれると迷惑する

464 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:07:04 ]
大人数でやるところほど、きめうちしたほうが無難っていうか。

ジェネリックテキストつかってても、ワイド文字版と、マルチバイト版と両方でテストやってるところなんてほとんどないだろうし。
文字列を編集してる処理とか、ちゃんと、マルチバイトでもワイド文字でも動くように意識して書いてなかったりするだろうし。
テスト以前に、コンパイル通すとかもやってないだろうし。
古いコードをあさったら、char *p = _T("・・・・"); みたいのいっぱいあるだろうし。

中途半端に対応しても、どうせ片方でしか動かないコードなら、きめうちのほうが安全だと思われ。

465 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 18:58:07 ]
そういう場合は開発環境も限定するだろ
特定の環境でしかコンパイルできないサンプルをばらまかれると皆が迷惑する

466 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:24:42 ]
いや、ジェネリックテキストなんて、VCにしかないでしょ。



467 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 19:28:35 ]
>>466
またまた御冗談を

真面目な話、BCCでもGCCでも<windows.h>が使えるやつならどれでも使える。
<tchar.h>も結構存在するし。

468 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:36:49 ]
それでもWindows限定じゃん。

469 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:42:29 ]
まあWindows APIだしね。

470 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:48:41 ]
>>465
それはジェネリックテキストを使っても、ぜんぜん解決してない。

471 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 06:11:10 ]
C#でメソッドなどの一行上に"///"書くことで自動生成されるXMLのドキュメント

/// <summary>
///
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public int hoge(int i) { return 0; }

このような機能はC++ではないのでしょうか
クラスやメソッドをオブジェクトブラウザで参照したいのですが,うまくいきません.
どのようにすればいいか教えていただけませんでしょうか.
お願いします.

472 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 06:19:51 ]
C++はプログラミング言語です

473 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:00:10 ]
テキストボックスを使わずに、キースキャンで読み取った文字から漢字辞書変換をしたいのですが
できるでしょうか?どのようにすればいいですか?

474 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:15:21 ]
IME使う


475 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:29:19 ]
説明してあるHPなんかあったら紹介して欲しいです

476 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:44:21 ]
つ[msdn]



477 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 09:52:50 ]
初心者にやさしくヽ(`Д´)ノ

478 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 10:03:22 ]
msdn.microsoft.com/ja-jp/library/cc448105.aspx
ここにIME関連のapiの一覧があるから
適当なapiの名前でぐぐれば何か見つかる

479 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 10:06:30 ]
ありがd

480 名前:デフォルトの名無しさん [2008/09/16(火) 18:04:42 ]
VC6でDirectXを使いたいです。
本格的なゲーム作るわけじゃないんですが、
ある業務用ソフトの画面効果で軽い2D処理が必要になりまして。(スプライトが
使えればいい程度)

ウェブを見た限りではVC6で使う情報はあまり無かったようです。
9.0のSDKと、VC6で使えるようになるという2004 Summer Extrasは入手しました。

ライブラリをインクルードするところから知りたいです。

481 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:22:45 ]
質問です。

VisualC++ 6.0 MFC
WindowsXP SP3

の環境で作成した、画面をビットマップ保存するプログラムを、
別のPC
VisualC++ 6.0
WindowsXP SP3

の同じ環境で実行すると、作成されたBMP画像が「描画できませんでした」となってしまいます。

この場合、どのようなことが原因だと考えられますでしょうか?
また対応策はあるのでしょうか?
どうかご教授おねがいします。

482 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:29:52 ]
業務用ソフトだったら外注に頼むだけ

483 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:30:32 ]
多分、ビットマップが微妙に正しく生成されていないのだろう
別のPCで、BMPファイルは何と関連付けされてるの?
ペイント?Windowsのビューア?IE?

対策:「画面をビットマップ保存するプログラム」のソースを見直す

484 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:42:21 ]
画面をビットマップ保存するプログラム

作成されたBMP画像が「描画できませんでした」

本当にお前が作ったプログラムか?
ソースコピペしたら動きましたレベルだろ

485 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 18:54:08 ]
>>483
Windowsのビューアです。プログラムを見直したいと思います。
>>484
そうです、申し訳ありません。
ですが、同じ環境のPCなのに失敗するのは何が原因と考えられるのでしょうか?
よろしくお願いします。

486 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:19:45 ]
考えられる原因は無限にある。
せめてどこで失敗するのか突き止めろ。



487 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 06:44:43 ]
>>481
モニターのカラーのビット数が違うとか


488 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 06:48:41 ]
何も知らない初心者がC#ってやつから始める事にしたお。
その次はJAVAかな。地味に頑張るお。新兵に激励を頼むお。

489 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 07:58:15 ]
貴様は人間ではない!糞ほどの価値もない!
C#訓練に生き残れたら、プログラムの司祭となる!
サービス残業に命を捧げるTI土方だ!

490 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 09:22:37 ]
ビットマップの作成で失敗するか、表示で失敗するかぐらい確認しろ
それぞれの環境で両方のビットマップ表示したらわかるだろ

491 名前:デフォルトの名無しさん [2008/09/17(水) 16:09:06 ]
std::vectorに自分で作ったクラスのオブジェクトのポインタ入れてあるんですけど
clear()をすると、保持してるポインタのさしてるオブジェクトをdeleteしてくれるんでしょうか?

492 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:44:02 ]
スレ違い

493 名前:デフォルトの名無しさん [2008/09/17(水) 16:54:08 ]
>>492
死ねアホ。

494 名前:デフォルトの名無しさん [2008/09/17(水) 16:57:32 ]
std::vectorに自分で作ったクラスのオブジェクトのポインタ入れてあるんですけど
clear()をすると、保持してるポインタのさしてるオブジェクトをdeleteしてくれるんでしょうか?

495 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:05:43 ]
ここC++スレじゃないけど

496 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:07:42 ]
>>494
boost::ptr_vectorを使うか、boost::smart_ptrでポインタを包む



497 名前:デフォルトの名無しさん [2008/09/17(水) 17:08:26 ]
Visual 「「「「C++」」」」」」

498 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:08:28 ]
×boost::smart_ptr
○boost::shared_ptr

std::auto_ptrはだめです

499 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:12:02 ]
>>496>>498
要するに勝手にdeleteまではしてくれないということですね?
boostの使用も検討してみます。ありがとうございました。

500 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:12:37 ]
数学の授業で小学校レベルの算数の質問されたら迷惑だろ
いちおう関係なくはないけど

501 名前:デフォルトの名無しさん [2008/09/17(水) 17:15:39 ]
↑今日一番のアホ

502 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:31:33 ]
>492,495,500
痛いな

503 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:00:34 ]
寧ろ>493,497,501,502が痛い罠。

504 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:14:29 ]
いやいや、俺に言わせれば
>502,503
が必死w

505 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:15:20 ]
C++やC#やるのにどのソフトがお勧めとかある?

506 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:28:10 ]
とりあえず2008 Express Edition使っとけ



507 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:50:45 ]
Microsoft Visual Studio 2008 Express Editionの事?
無料でいいのか?とか不安に思った
Visual Studio .NET Professional普通にこっちのがいいかとも思ったけど
Express Editionでも平気ならそっちでいいか

508 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:19:56 ]
お前に使えるのか不安に思った

509 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:36:02 ]
むむ…初心者を舐めたらいかん
きっとなんとかなる…はず…多分…恐らく…

510 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:23:22 ]
>>507
グダグダ言ってる間に使ってみればいいだろ

511 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:41:18 ]
>>499
VC++ 2008にSP1当ればboostなくてもstd::tr1::shared_ptrが使える。

512 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 18:39:27 ]
数日前までうまく言っていたのに、急にコンソールウィンドウを
最大化しないと見られなくなりました。
原因が分からないのでどなたか教えてください

513 名前:デフォルトの名無しさん [2008/09/18(木) 20:22:37 ]
VC6で、ウィンドウ上部のメニューやツールバーアイコンを、
必要に応じて適宜、グレー可(クリック不可なようにする)などの変更をする方法教えてください。

514 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:07:25 ]
Enable: ボタンを選択可能または選択不可能に設定します。

515 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:06:37 ]
CとC++の違いって何ですか?

516 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 10:07:07 ]
一言では言い表せない



517 名前:デフォルトの名無しさん [2008/09/19(金) 14:06:30 ]
VC++とBorland C++Builderってどっちのほうがつかいやすい?
低スペPCの俺には無理?

518 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 14:35:32 ]
人による

519 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 15:15:31 ]
VC++のほうが低スペック
コンパイル速度はBCC

520 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 15:18:52 ]
そんなどうでもいいことで選ぶやつもいるんだ

521 名前:481 mailto:sage [2008/09/19(金) 17:35:10 ]
>>486
ビットマップの作成で失敗していると思われます。
プログラムの作成に使用したPCではビットマップ画像のファイルの大きさが2,521KB
に対して、プログラムを移行させたPCではファイルの大きさが1,262KBで作成されてしまいます。

>>487
プログラムを移行させたPCが手元にないのでわかりませんが、調べて同じにしてみたいと思います。

>>490
上にも書いたとおり、ファイルの大きさが違うので作成で失敗していると思われます。

よろしくお願いします。

522 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:56:20 ]
>>517
VCスレきたんだからおとなしくVCつかっときな
BCのほうはただでさえ人少ないのに
偏屈なこだわりがある自称玄人ばかりだから
ネットの情報すくないし何を聞くにしても大変
だからといってVCはましなのかというと腐ってるわけだがBCほど腐ってない



523 名前:デフォルトの名無しさん [2008/09/20(土) 16:48:08 ]
VC6で、DirectXのAPIを使わずに、スプライトなどの2Dグラフィックス表現を実現する簡単な方法はありますか?
オートシェイプのような簡単な画面レイアウトソフトを作りたいのですが、
標準のコントロールやCViewクラスの描画メソッドでは、重なりや透過などの指定に限界が出てきてしまうようです。
オブジェクトをドラッグで移動したり拡大縮小したりにも対応させたいので、
ゲームプログラムに近い作り方で各オブジェクトをスプライトとして扱いたいのです。

業務用で使うツールとして、DirectXが動くかどうか怪しい環境でも使うことを想定しているので。
DirectXのAPIを使うことは無しの方向で、いろいろ模索しています。


524 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 16:52:36 ]
bitbitがある


525 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 16:59:53 ]
このソースで初めて、windowsの標準で描写できるのを知った

おまいらSaGa4つくろうぜ!
www.geocities.jp/saga4project/

526 名前:デフォルトの名無しさん [2008/09/20(土) 17:12:53 ]
VC++でソースをかいてビルドするのですが、
VC++が応答なしになってしまってビルドできません。
これはスペックの問題でしょうか?

ちなみに警告やエラーはありません。



527 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 17:31:06 ]
正直向いてない

528 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:25:09 ]
bitbltだろww

529 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 21:32:17 ]
当然とは思ったけど念のため手持ちのゲームを解析してみたら
必ずしもDirectXは使ってないね

530 名前:481 mailto:sage [2008/09/20(土) 22:24:56 ]
解決しました。

>>487さんがおっしゃってたことを試しました。
プログラムに使用したPCのモニターのカラーのビット数を最高(32ビット)から16ビットにして
ビットマップを作成すると、1,262KBの描画できていないビットマップが作成されました。

なので移行したPCもモニターのカラーを最高(32ビット)に変更したいと思います。
ありがとうございました。


531 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 22:29:28 ]
なんつう糞プログラムだ

532 名前:523 [2008/09/20(土) 23:17:20 ]
>>524 >>525 >>528 >>529

Bitbltですね。ヒントありがとうございます。

スプライト的な使い方ができる解説やサンプルみたいなのありますか?
>>525のソースは見てみましたが、
できればVC6のプロジェクト形式でのサンプルがあればと。

Bitbltを使えば、CViewクラスのビュー上に描画することが可能なのですか?


533 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 23:21:35 ]
VC++開発においてC#やVBなどで用いられる
IDE機能をもたらすアドインはないでしょうか?

例えば、コメント表示(C#ではコメントはXMLで整理されており
コード内のメンバにカーソルをあわせたときや入力補完のときに
情報ウィンドウにコメントが表示されます)や、
コードチェッカ・整形(C#ではresharperというアドインによって
定義されていないメンバの呼び出しに色づけしたり、
メンバ名変更などのリファクタリングができます)
クラス定義のリンク
(既定・継承クラスへのリンクを列挙したり
名前からクラスやメンバを検索したり、
参照へのリンクも標準のgrepみたいな質素なのではなくて、
名前空間・クラス・メンバで階層化されたものがよいです)

こういった定番的な付加機能のアドインを知りたいです。

あとVSのエディタで宣言部分
(例えば「Vector vec;」でVectorの部分)に色づけをすることはできませんか?

534 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 23:43:50 ]
コピペ、クレクレ厨かよ

535 名前:533 mailto:sage [2008/09/20(土) 23:55:04 ]
>>534
お気を悪くされたのでしたら申し訳ありません。
でもコピペではないし、
ここはVC++関連について教えて頂けるスレではないのでしょうか?
クレクレばかりではなく普段自分が教えられることは教えていますし、
事前に一応検索もしました。うまく見つけられなかったので
お力を借りたいと思いここに書きました。

536 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 00:22:22 ]
その機能ってインテリセンスなんじゃないのか?
あと、特定の単語に色をつける機能はある。Userナントカってファイルがどうのこうの、だったが……忘れた。



537 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 08:25:41 ]
>535
初心者スレで質問してるんだから初心者だよな?
慣れるまでデフォルト、ノーマルで使っとけ

538 名前:533 mailto:sage [2008/09/21(日) 19:33:38 ]
>>537
すみません、C++は初心者ですが必要になったから使うだけなので
ガリガリ書いてマスターする気にはなれません
(デフォでやったからといって上達するわけでもないし)。
なので支援機能は是非欲しいのですが皆さんデフォで使ってるのでしょうか?
.NETと比べるとまるでプレーンテキストを読み書きする感覚です。
初心者スレではなく他のスレに書いたほうがいいのかな?

539 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 19:44:47 ]
C++はマスターしてから書きましょう

540 名前:デフォルトの名無しさん [2008/09/21(日) 20:25:18 ]
visual C++の入門書を買おうと思うんですが、どれがいいでしょうか?
プログラミング経験は、あまりないです。(PHPを少し扱える程度)

541 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 20:34:15 ]
>プレーンテキストを読み書きする感覚
的確な表現だと思うのは俺だけか。


ドットネットが部品を組み合わせて使うものなら、C/C++はその部品を自分で作らなくちゃいけないんだよ。
判りやすく言うと、マゾい。作りたいアプリとは関係ないところで躓くことも多いし、
ちょっと間違えただけで簡単にクラッシュする。一昔前ならOSごと落ちる。

はっきりいって、そのような向上心のない態度ではとてもじゃないが使えない。
時間の無駄。断言できる。結果が出せるまで一年くらいかかることは確定的に明らか。

それでもC/C++を使ってる人たちは、そのような強烈なデメリットを承知の上で、
なおあまりあるメリットを見いだしてるから。
部品を自分で作る必要がある、ってのを、どうとらえるか。
それ次第で、C/C++は便利な道具にも、使えないガラクタにもなる。

いいかね?使う方が言語を選ぶんじゃあない、言語が使い手を選ぶんだ。それがC/C++だ。
わかったらドットネッターにもどるんだな。おまえにも かぞくがいるだろう……

542 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 20:35:39 ]
ガイル乙www

543 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 20:36:22 ]
少佐!お疲れ様であります!

544 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:27:48 ]
>538
このへんを参考に
www.microsoft.com/resources/msdn/en-us/msdntv/episodes/en/20031028LHORNDB/ChrisA-DonB_300K.asx

545 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:28:39 ]
>>541
マスターする気がないといったことは、
バリバリやってるマ様には失礼な発言ですみませんでした。
でもそこまでマゾになんなくても、
楽をするのに努力を惜しまないのがマなのでは?
OSSが巷に溢れる昨今に部品を自作する意味は弱いという考えもありますし、
そもそも今回の話題は部品の自作ではなく環境の整備が焦点です。
あんまりにも環境が貧弱でそれが無駄にC++の敷居を上げている
と思ったのです。
以下は質問なのですが
継承クラスを探すのにはgrepでもやってるのでしょうか?
与える引数の型がミスしてるのを脳内チェックかコンパイラしか
見つけられないのでしょうか?
メンバ名の変更は対象以外が置き換わる危険性を孕んでまで全文置換でしょうか?
細かな仕様(例えば参照渡しで事前に値設定が必要なのかなど)
もわかりづらいと思うのですが、いちいちリファレンスを引くのでしょうか?

546 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:32:51 ]
C++は複雑すぎてインテリセンスできないのです。
C#のように単純な言語ならではなのですインテリセンスは。



547 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:40:51 ]
>>546
インテリセンス(入力補完)はC++でも有効でしょうし複雑さとは
関係がないような気がします。コメント概略が表示されないのは何故…。

548 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 21:49:20 ]
>>544
ありがとうございます!少し道が開けた感じです。
連投すみませんでした。皆様もよりよい環境でプログラミング
できますように。

549 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 12:20:40 ]
ここでそんなことをぐだらぐだら聞くよりもやるべきことは他にあるだろうに。

550 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:21:41 ]
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3904878&SiteID=7

日本語読まない奴ってどこにでもいるなぁ

551 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:26:45 ]
自分の知らない単語は無意識に飛ばしてるのだろう。
これは日本語でも英語でも同じw

552 名前:デフォルトの名無しさん [2008/09/22(月) 18:54:56 ]
>>540の回答お願いします。

553 名前:523,532 [2008/09/22(月) 18:56:55 ]
Bitbltでオブジェクトを表示したりマスクかけたりする処理についていろいろ調べてみました。
画像とそのマスクを用意して透過するぐらいまではなんとかできるようになりました。

今作ってる表示のメインはテキストや図形なので、とりあえずテキストを貼り付けたCDCオブジェクトを用意したいのですが・・・
どのようにしても表示されず困っています。

viewのOnDrawメソッドで、

CDC* spr=new CDC;
spr->CreateCompatibleDC(pDC);

spr->TextOut(0,0,"テスト文字");
pDC->BitBlt( 0, 0, 300, 300, spr, 0, 0, SRCCOPY);

これで何も出ないです。

TextOutではなくDrawTextでやる方法も試みました。
DrawText(spr->m_hDC,"てすともじ",11,temp,DT_CENTER)

こちらも表示されないようです。

画像表示のときは
CDC::SelectObject()
で、対象のCBitMapを指定すれば良かったようですが、
テキストの場合はどう指定すればよいですか?
VC6なので資料やサンプルが少なくて難儀してます・・・


554 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:58:30 ]
>552
PHPを少し扱える程度じゃVCは無理
もうちょっと初心者向けの言語をお勧めします。

555 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 18:59:52 ]
>>553
DCはデフォルトでは1x1のモノクロビットマップが選択されている
そのまま描いたらたぶん、1ドットだけBitBltされてると思うよ、よくみてみ。
通常はイメージに限らず、ビットマップを作成してDCに選択し、そこに書き込んでから
ウィンドウにBitBltする。

556 名前:デフォルトの名無しさん [2008/09/22(月) 19:20:34 ]
>>555
CBitmapクラスにテキスト(の形)を読み込んで使うということですか?
どのメソッドを使ったら良いか教えてください。



557 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:29:20 ]
コピペ君には教えるだけ無駄

558 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 21:59:36 ]
メソッドじゃできないよ。CでAPIを直に触らないとダメ

559 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 00:49:37 ]
>>553
CBitmap::CreateCompatibleBitmapをやって
553で言うところのsprにSelectObject
あとはspr->TextOut or DrawTextしてpDCへBitBlt

手(CDC)に紙(CBitmap)と活字(CFont)を持って(SelectObject)文字を書く(DrawText)
最初は面倒だけどすぐ慣れるよ。

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言語で { を勝手に改行されたら逆に困りますよ

661 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:14:03 ]
C++クラスの追加とかの自動で挿入されるコードについて、ってこと?

662 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:17:34 ]
具体的に言うと
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
て感じです

そもそも後者の方は一般的ではないんでしょうか?
もしそうなら今の設定に慣れるように努力します

663 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:20:33 ]
俺は後者だよ。その方が見やすい。別に手動で改行すればいいじゃん。

664 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:28:00 ]
自動でできる設定はないですか・・・。
分かりました手動で頑張ってみます
どうもありがとうございました

665 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:29:37 ]
ツール→オプション→テキストエディタ→C#→書式設定→改行→新しい行にメソッドの始めかっこを配置する

にチェック

ではないか
C++/CLIの設定ってあるのかね?

666 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:20:17 ]
自分で探せ



667 名前:デフォルトの名無しさん [2008/10/02(木) 23:33:03 ]
あるレジストリキーの直下にある複数のレジストリキーの
リストを取得する関数はありますか?
具体的には↓のtest直下にあるtest1、test2、test3の名称を取得したいです。

 test\test1
    \test2
    \test3

668 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:41:52 ]
apiにはそういう機能がないから第三者が作った関数を探してるということ?

669 名前:デフォルトの名無しさん [2008/10/02(木) 23:50:43 ]
test以下に何があるかわかんない場合だよね
RegOpenKeyEx と RegQueryInfoKey と RegEnumValue で列挙できたと思う
詳しい使い方忘れた、ググれ

670 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:51:36 ]
>>668
そういうAPIを探していたのですが見つからないので
自作しかないでしょうか?

671 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 23:55:52 ]
>>669
ありがとうございます。それらのAPIを調べてみます。

672 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 00:31:05 ]
RegEnumKeyExという関数を見つけました。
これで取得できそうです。

673 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:22:01 ]
#define ANYARGS ...
と言う宣言は、可変長引数を表しているのですか?
'...'でググッたら死ねましたorz

674 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:48:13 ]
レジストリ触るのが怖くて未だにINIファイルな俺

675 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 07:49:35 ]
そう予測したのなら、可変長引数でググってみればいいじゃない

676 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 11:18:54 ]
>>673
名前と ... から考えるとそうだろう




677 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:01:50 ]
今Vista(x64)マシンでVC++.net2008を使いコンパイルしたのを
ノーパソのXP(x86)にもってきてみると動きませんでした
動かない理由は
1.x64でコンパイルしたから
2.MS土台のバージョンが古いから
3.そもそもXPでは動かない
どれでしょうか?

678 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:08:52 ]
クイズかよ

679 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:12:15 ]
ワロタw

680 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:12:24 ]
あと2008は2005と違って日数制限があって完全フリーじゃないんですよね?

681 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:16:15 ]
2008 expressはフリー゜

682 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:20:20 ]
AnyCPUなら動くよ…
fw入ってないんだろう

683 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:20:24 ]
そうですか
677 ノーパソに2008入れてないのがまずいのかな〜

684 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:21:48 ]
>>682
ノートはシングルコアでした

685 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:24:34 ]
ああ、ここVC++か
再配布可能なファイルredistなんたらが入ってるから
それ入れてみ

686 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:28:45 ]
やってみます
使う側も最新にしとかないとだめなんですねえ



687 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:36:14 ]
あと、ターゲットをx64にしてたら
動かすほうのOSも64bitじゃないと
動かないよ、当然だけど念のため

688 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:38:04 ]
了解

689 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:47:38 ]
あーあとコード生成の設定で/MTにすると追加無くても動くかもな。

690 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:54:58 ]
/MTですか
探して見ます

691 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:04:42 ]
結局、Debug版という落ちだったりして。

692 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:07:41 ]
>>674
俺は商用アプリでもなきゃレジストリ使わないな
インストーラーアンインストーラー不要で済むし

693 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 14:08:23 ]
いくらなんでもメッセージ見て気が付くだろ

694 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:11:03 ]
.netから *View.cpp はないんですよね
全部 *.cpp に書くんですか


695 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:20:11 ]
C++/CLIのことを言ってるならありゃ全部 *.hに書くんだぜ。
MVCとかMVPにしたいなら自分で勝手にrefクラスを分ける。

696 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:25:37 ]
C++勉強しようとインストールしたまでは良いのですが、コンパイルが出来ません
メニューにビルドの項目が無いのですが、どうやって追加するのですか?



697 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:30:07 ]
新規プロジェクトを作成して、書いたコードをプロジェクトに追加してからビルドする。

698 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:31:19 ]
>>696
メニューの、新規作成 -> プロジェクト でプロジェクトを作成しないと、ビルドはでないよ。

699 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:36:09 ]
>>697-698
親切にありがとうございます
無事にコンパイルが出来ました

700 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 21:47:21 ]
pc11.2ch.net/test/read.cgi/tech/1222813731/31,32
で宿題を教えてもらったものですが、
Visual C++で
pc11.2ch.net/test/read.cgi/tech/1222813731/32
のソースコードで開くファイルを指定するにはどうすればよいでしょうか?

向こうのスレでは
pc11.2ch.net/test/read.cgi/tech/1222813731/71
という方法を教えられたのでコマンド引数にファイル名をフルパスで書いたのですが、うまくいきません

701 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:19:53 ]
あなたはプログラムをやらない方がいいと思うよ
とっととコンビにのバイトの面接でも受けにいけばいかがでしょうか。

702 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:24:13 ]
コンビ弐

703 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:27:46 ]
学校で聞け

704 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:32:32 ]
過去ログ読まないでいきなり質問するやつ

705 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 22:43:46 ]
>>704
このスレのログは「ファイル」で検索して読みました。
読んでもわかりませんでした。

706 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:46:39 ]
この程度のことを自力でできないような奴にプログラマになられても迷惑だよ



707 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 22:53:44 ]
>>705
何がどううまくいかないのか説明して欲しい。
fopen()でNULLが返ってくるのか、
それとも他に何かエラーが出ているのか。

708 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:05:14 ]
>>707
ソースコードは
#include<stdio.h>

void moji_line_count(const char *filename){
FILE *fp;
int prev='\n', moji, moji_count=0, line_count=0;

if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;

printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}

int main(int argc, char *argv[]){
int i;

for(i=1;i<argc;i++) moji_line_count(argv[i]);
return 0;
}

なのですが、エラーが帰ってくるのではなく純粋にこのソースコードで開くファイルを指定する方法ががわからないのです

709 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:09:33 ]
コマンドラインに打ち込んだ文字列も書けよ

710 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:10:36 ]
>>708
ファイルを指定する方法は、
プロジェクトのプロパティ>構成プロパティ>デバッグ>コマンド引数で
ファイル名を指定する、と既にアドバイスをもらっているはずだけど。

711 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:16:07 ]
>>710
適当なテキストファイルのフルパスを打ち込んで見ましたが、うまくいきませんでした
アドレスは
打ち込むのってこれであってますよね?
C:\\Documents and Settings\\ユーザー名\\デスクトップ\\テキストファイル.txt

712 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:17:26 ]
gccつかえ

713 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:19:19 ]
gcc

www.tdragon.net/recentgcc/

714 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:20:39 ]
コマンドライン使えないやつ

715 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:22:00 ]
>>711
何度も言うけど、うまくいかないという書き方は良くない。
何をやって何がうまくいかなかったのか丁寧に書くべき。

で、そのフォルダに「テキストファイル.txt」というファイルは置いてある?

716 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:23:24 ]
結局何がどううまくいかないのかがわからないんだが。
意図していた結果と、実際に得られた結果がどうなってるの?



717 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:28:54 ]
>>715
すいませんでした。
Ctrl+F5でビルドしても「続行するには何かキーを押してください」とでてキーを押すと終了します。

ファイルは確かにデスクトップにおいてあります。

>>716
>>708のソースで求めているものは、
ファイルを1つまたは複数指定し、
各ファイルに含まれる行数と文字数を数えて画面に出力
なのですが、
ファイルを指定して各ファイルに含まれる行数と文字数を数えて画面に出すことができず、
終了してしまいます

718 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:30:42 ]
もう711で答え出てるじゃん

719 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:38:22 ]
>>717
コマンド引数を指定して、ファイルは存在するとしたら
プログラム自体がおかしい、となる。
そこでブレークポイントを置いてF5でデバッグ実行。

720 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:41:47 ]
あっちの71です。
ひょっとしてDocuments and Settingsの罠にかかってる?
argvの中身確認してみて。

721 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:47:22 ]
>>720
argvをググりましたがさっぱりわかりません


722 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:48:53 ]
だめだこりゃ

723 名前: ◆3CnrSiNVYE mailto:sage [2008/10/04(土) 23:50:49 ]
ダメですか…

んじゃー退散します
つきあってくれたかたありがとうございました

724 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:51:37 ]
>>721
何がわからないのか説明(ry
あとデバッグ実行(ry

725 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:58:07 ]
argvの中身を確認しろと言われてググるとは…
プログラムは誰かに作ってもらったんだろうな。

726 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 00:18:23 ]
最初から宿題スレで作ってもらったと書いてあるやん



727 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:02:34 ]
\\

バカじゃねーのwww

728 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:16:41 ]
質問者も回答者も馬鹿
ホントゴミ溜め以下だなここは

729 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:18:23 ]
宿題やってもらう前に授業をちゃんと受けろと

730 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:39:36 ]
こういうのがいるから、ソフトのバグはいつまで経っても無くならないんだろうなあ……

731 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:26:38 ]
GUI環境でコンソールプログラムをやると
GUI環境とコンソール環境の両方の知識が必要になるから
最初はコンソール環境で始めた方がいい。
小さなプログラムコンパイルするのにいちいちプロジェクト作ったり
パラメータ渡すのに設定いじるとか
よくそんな面倒なことやってるなと感心する。

732 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:43:54 ]
学校と同じgccいれろよ

www.tdragon.net/recentgcc/

733 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:02:31 ]
>>731
MAKEFILE覚えないですむから比較的楽じゃね?

734 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:04:21 ]
いきなりデバッガ使えるからGUIに限る。
しかしデバッガ自体知らないのでは話にならんが。

735 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:07:01 ]
確かに、printfデバッグより楽だからいいよな
まあでも学生ならgccなりBolandのC++コンパイラーなり覚えた方がいいと思うが

736 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:30:02 ]
プロジェクトつくるまでもない規模ならMAKEFILEも必要ない



737 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:34:58 ]
プロジェクト作る程度の事がそんなに大変だともおもわんけどね

738 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 11:41:45 ]
プロジェクトがないとCやるのは不便
一ファイルに難行も詰め込んだら間違える

739 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 12:00:43 ]
まあ、ちょいとしたツールや宿題程度の問題なら、
cl main.c で充分だわな






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<181KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef