★初心者にVisual C++ ..
[2ch|▼Menu]
173:169
08/08/16 21:20:11
キーバインド Visual Studioで検索したらやり方がわかりました。
どうもありがとうございました。

174:169
08/08/16 22:53:11
インデントはEmacsのようにできるのですが、
データの保存など他のキーの設定もEmacsのものになってしまいました。
インデントだけをEmacsのものにする方法はありますか?

175:デフォルトの名無しさん
08/08/17 02:19:20
そうきたか、
コマンド検索のとこに「インデント」っていれて
適当なコマンドと設定を入れ替えろ

あと、プログラマ志望なら
今のうちにEmacs操作覚えた方が良いぞ、楽だから
vi派って訳じゃないんだろ

176:デフォルトの名無しさん
08/08/17 02:51:42
( ´д)ヒソ(´д`)ヒソ(д` )今時Emacsだって・・・

177:デフォルトの名無しさん
08/08/17 04:41:46
最近の流行はなんなんだ?

178:デフォルトの名無しさん
08/08/17 06:58:46
スレ違いかもしれませんが、教えてください。
Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をダウンロードしてきて
インストールしたのですが、インストールディレクトリが”一番空き容量が多いドライブの直下”に
インストールされてしまいます。これは仕様なんでしょうか?

179:デフォルトの名無しさん
08/08/17 10:39:00
テンポラリ展開じゃなくて?

180:デフォルトの名無しさん
08/08/17 11:17:04
>>179
一時ファイルのようで、展開されたファイルは削除しても問題ないっぽいです。
お騒がせしました

181:デフォルトの名無しさん
08/08/17 13:53:54
Visual C++ 2008 Express Editionで、
ファイル → 新規作成 → プロジェクト → Win32 コンソールアプリケーション

プロジェクト → 新しい項目の追加 → C++ファイル

として、
stdio.hをインクルードして文字列を表示させる簡単なコードを書いて実行したのですが、
コマンドプロントみたいなウィンドウが一瞬開いてすぐに閉じてしまったため
文字列をよく確認出来ませんでした。

どうしたら開いたままにしておけるのでしょうか?


182:デフォルトの名無しさん
08/08/17 14:31:25
あるあるw
どうするんだろ

出力ウィンドウにも何も出ない?

183:デフォルトの名無しさん
08/08/17 15:16:03
「○○を読み込みました」・「シンボルが読み込まれました。」
っていうのが4行と、
あともう1行、
「プログラム○○はコード0(0×0)で終了しました。」
っていうのが出ます。
コード0っていうのはreturn 0にしたからだと思うんですが…。

184:デフォルトの名無しさん
08/08/17 15:19:07
邪気眼がどーのこーの

185:デフォルトの名無しさん
08/08/17 15:35:48
>>181

同じく初心者で、昨日から始めたんですが
returnの前に、文字を入力する関数を入れることで対処してます。
Cだと
scanf("%d",n);
とかなんですが。

186:185
08/08/17 15:38:07
ごめん。
今見たら
scanf("%d",&n);
でした。もちろん、先にnは宣言するものとして。
でもC++だと入力するための関数違うと読んだ気も。

187:デフォルトの名無しさん
08/08/17 15:40:48
Ctrl+F5でいいじゃね?

188:デフォルトの名無しさん
08/08/17 15:45:39
そうか、、、
とりあえず、
・確認したいだけなんだったら、stderrでメッセージ出せる
・あと処理の最後に無限ループ入れる

189:デフォルトの名無しさん
08/08/17 15:46:25
>>187
ガチで知らなかったんだがw


190:デフォルトの名無しさん
08/08/17 15:50:17
全ての質問が初心者ではなく初心者を装った釣師によるものだと仮定して
いかにうまくボケるかを競いあう
ここはそういうスレの一つだと思い込んでいる

191:デフォルトの名無しさん
08/08/17 16:01:39
>>190
ガチで知らなかったんだがw

192:181
08/08/17 16:30:01
>>185,>>187,>>188
出来ました!ありがとうございます!

193:デフォルトの名無しさん
08/08/17 16:42:45
dialogBoxにPostMessageしても届かないんだが、ちなみに
PostMessage(hDlg,0x500,123,456);
なぜだ?


194:デフォルトの名無しさん
08/08/17 16:52:28
お前ぜんぶ聞く気だろ
調子乗んな

195:デフォルトの名無しさん
08/08/17 20:53:27
アふぉはだまっとれ

196:デフォルトの名無しさん
08/08/18 10:52:14
>>185
getchar()でいいじゃん。わざわざ変数を用意する必要があるscanf()を使うのはナンセンスだ。

>>188
無限ループってあんた、エコじゃないな。

>>181
cmd動かしておいて、コマンドラインから動かすって手もあるよ。

197:デフォルトの名無しさん
08/08/18 10:58:29
昔から、return 0; の部分にブレークポイント置いている。
まあデバッグ必要ないときはCtrl-F5だが。

198:デフォルトの名無しさん
08/08/18 17:12:40
_findfirst("tes*.tx", &searchData) でファイルを検索した場合には
test.tx は見つかり test.txt は見つかりません。
しかし、_findfirst("tes*.txt", &searchData) で検索した場合には
test.txt も test.txtx も見つかります。
Q1. ドキュメントには書いてないのですが、この関数は拡張子を3文字しか見ないのでしょうか。
Q2. 4文字以上の拡張子に対応したファイル検索関数にはどんなものがありますか。

199:デフォルトの名無しさん
08/08/18 17:45:36
>>196
>getchar()でいいじゃん。

あらほんと。今度からこっち使います。
ありがとう。

200:デフォルトの名無しさん
08/08/18 18:39:01
VC使ってるならsystem("pause");でいいかと

201:デフォルトの名無しさん
08/08/18 20:15:09
変なクセつけちまうから
getchar()で良いでしょ

202:デフォルトの名無しさん
08/08/18 23:10:13
>198
たしかWindowsが隠して格納してる8.3なファイル名がひっかかるんだな。
Short Filenameってやつ。findfirstしてあらためて排除するとか。

203:デフォルトの名無しさん
08/08/19 02:02:38
メソッド名の頭にアンダーバー付いてるのとか
何か意味があるのですか?

204:デフォルトの名無しさん
08/08/19 02:21:43
URLリンク(msdn.microsoft.com)

205:デフォルトの名無しさん
08/08/19 12:28:52
ありがとう

206:デフォルトの名無しさん
08/08/20 05:52:40
Dドライブに今までなかったファイルがいくつか作成されてる。。。
Eula.1041.txt
globdata.ini
install.exe
install.ini
install.res.1041.dll
VC_RED.cab
VC_RED.MSI
vcredist.bmp
しかも作成日時が2007‎年‎11‎月‎20‎日。
二週間ほど前にPC買い替えたばかりだからこの作成日時はおかしいと思う。
調べてたらvisualC++が関係してるっぽい。
これなに?

207:デフォルトの名無しさん
08/08/20 08:00:59
インストーラが一時ファイルを展開したんだろ。

208:デフォルトの名無しさん
08/08/20 09:56:20
VS2008のインストールしたんだろうな

209:デフォルトの名無しさん
08/08/20 11:36:28
インストーラって怖いな

210:デフォルトの名無しさん
08/08/20 12:32:56
やっぱりか
2005は初めから入ってたんだけど、これって勝手に更新したりするものなの?
2008なんてインストールした覚えがないし、気味わるいからアンインストールしたいんだけど。。

211:デフォルトの名無しさん
08/08/20 12:47:25
別に一時ファイルだし勝手に消せば?
とりあえずそのファイル群は再配布可能なやつだと思うから
なんかのソフトが必要としたんじゃないの?
2008というのは2007/11/20だからそう思ったんだけど。

212:デフォルトの名無しさん
08/08/20 13:03:48
なんかのソフトが必要としてるんならアンインストールしないほうがいいね。。
一時ファイルだけ削除しておく。
>>207-210サンクス

213:デフォルトの名無しさん
08/08/20 13:03:53
> 2005は初めから入ってたんだけど、
VisualStudioプリインストールなんてどこで売ってるの??

> これって勝手に更新したりするものなの?
しない。

214:デフォルトの名無しさん
08/08/20 13:06:36
visualstudioというのははいってなかった。
visualC++2005Redistributableというのが初めからはいってた。

215:デフォルトの名無しさん
08/08/20 13:12:58
それはランタイム。VCどころかパソコン初心者レベルの話になってきたな・・・

216:デフォルトの名無しさん
08/08/20 19:01:21
そのランタイムというやつは消しても問題ない?

217:デフォルトの名無しさん
08/08/20 19:23:17
消すな。最初から入ってたということは他のソフトが使ってる。


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

219:デフォルトの名無しさん
08/08/20 21:11:17
悪影響はあります

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

221:デフォルトの名無しさん
08/08/20 21:35:34
>>220だけど自己解決。
BUFFALOの
URLリンク(buffalo.jp)
をインストールしたときに一緒についてきたみたい

222:デフォルトの名無しさん
08/08/20 22:02:47
>>220
気付いたらってどういう意味だおいw


223:デフォルトの名無しさん
08/08/20 23:41:28
>>222
もう放っとこうぜ

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

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

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

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

227:デフォルトの名無しさん
08/08/21 14:16:49
やべー
なんかMFCマスターした気がする

228:デフォルトの名無しさん
08/08/21 14:19:55
おめでとう

229:デフォルトの名無しさん
08/08/21 14:26:17
ありがとう

230:デフォルトの名無しさん
08/08/21 14:38:50
オナニーマスター黒沢

231:デフォルトの名無しさん
08/08/21 14:57:30
URLリンク(fatalita.sakura.ne.jp)
にCStringはマルチスレッドに対応してないって書いてあるんだけど
マジで?
やべーじゃん。

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

大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
URLリンク(msdn.microsoft.com)

233:デフォルトの名無しさん
08/08/21 15:47:26
なーんだ

234:デフォルトの名無しさん
08/08/21 15:48:29
そして、VC++のstd::stringはどうかというと、こうなっている。
URLリンク(msdn.microsoft.com)
ちゃんとやらないとだめだという点でCStringと互角。

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

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

237:デフォルトの名無しさん
08/08/21 20:50:24
型について学び直せ。

238:デフォルトの名無しさん
08/08/21 21:13:58
文字列として受け取って変換するとかの話?

239:デフォルトの名無しさん
08/08/21 23:59:01
>>236

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

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

240:デフォルトの名無しさん
08/08/22 00:28:12
一体何がしたいんだ

241:デフォルトの名無しさん
08/08/22 01:03:46
冗談きつすぎるだろこれは…

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

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

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

245:デフォルトの名無しさん
08/08/22 10:10:37
memcpyでいいじゃん

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

247:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/24 09:34:37
C++を仕事で扱い始めて自宅でも勉強したいと思っています。

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

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

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

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

252:デフォルトの名無しさん
08/08/24 15:53:05
EE(笑)

253:デフォルトの名無しさん
08/08/24 16:01:34
っGCC/G++/MINGW

254:248
08/08/24 19:08:08
愚かなのでわかりません(´・ω・`)

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

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

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

257:デフォルトの名無しさん
08/08/24 22:54:44
Visual Studio Express Edition でググれ

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


258:248
08/08/25 06:30:55
>>256
>>257
ありがとうございます。

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


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

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

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

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

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

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

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

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

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

それ以外は知らん。

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

266:259
08/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
08/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:デフォルトの名無しさん
08/08/26 14:36:45
case WM_LBUTTONDOWN:が2個あるぞ。
どっちかはWM_LBUTTONUPの間違いだなんてことない?

269:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/26 14:41:00
それ、いつまでもindexが0だと思うんだ。

271:デフォルトの名無しさん
08/08/26 14:41:39
と、入れ替えるのか、失礼

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

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

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

275:デフォルトの名無しさん
08/08/27 17:46:46
可能です。

276:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/27 23:15:11
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib

278:276
08/08/27 23:33:57
>>277
ありがとうございます

279:デフォルトの名無しさん
08/08/28 08:45:12
>>275
どうやって渡すのか教えて下さい

280:デフォルトの名無しさん
08/08/28 09:09:18
ケースバイケース

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

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

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


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

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

286:デフォルトの名無しさん
08/08/28 18:58:41
でもC++/CLIはマジで最強だよ

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

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

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

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


290:デフォルトの名無しさん
08/08/28 19:53:24
C++/CLIは逆汗してもソースでないの?

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

292:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/28 22:42:44
regsvr32.exeをデバッグしてるって
マイクロソフトの中の人ですか?

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

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

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

296:デフォルトの名無しさん
08/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
08/08/29 04:19:47
他にも使用していたので、前者を使わせてもらいました。
ありがとうございます。

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

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

どっちなんだ。

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

300:デフォルトの名無しさん
08/08/29 18:30:13
作った後?
作るときなら、BS_DEFPUSHBUTTON

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

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

303:デフォルトの名無しさん
08/08/29 19:18:01
BM_SETSTYLE でもいけた。まあいろいろやってみ

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

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

305:デフォルトの名無しさん
08/08/29 19:32:48
それはない。
regsver32の対象になるのはDLLだけ。

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

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

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


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


309:デフォルトの名無しさん
08/08/30 15:57:21
変数の後ろに、カンマと数字で

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

 他にもautoexp.datを使う方法もあるみたいですね。
URLリンク(www.cycleof5th.com)
URLリンク(blogs.wankuma.com)


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

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


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

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

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

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

315:デフォルトの名無しさん
08/08/31 19:11:35
こんな動画まであるのか。
ホントになんでもあるなw

316:299
08/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:デフォルトの名無しさん
08/08/31 23:45:49
Enter打つとボタンが押されたことになるって挙動が欲しいなら、
ボタンのIDをIDOKにして、メッセージループにIsDlgMessageを組み込むじゃなかったっけ。

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

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

319:デフォルトの名無しさん
08/09/01 01:55:10
じゃあ、IsDialogMessageでググってみて

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

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

ありがとうございました

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

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

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

324:デフォルトの名無しさん
08/09/01 21:15:53
VC6使ってるけどC++の規格で困ったことなんかないな

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

326:デフォルトの名無しさん
08/09/01 21:24:29
会社で使うという事情なら6.0にしておけ。

327:デフォルトの名無しさん
08/09/01 21:25:37
ちゃんとライセンスがあるのか心配なレスだなしかしw

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

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

330:デフォルトの名無しさん
08/09/01 21:44:23
山本信雄のシリーズは入りとしては最高

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

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

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

332:デフォルトの名無しさん
08/09/01 21:59:50
そっか

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

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


334:デフォルトの名無しさん
08/09/01 22:12:31
libviscawinの使い方教えてください
ていうかどこで聞けばいいですか?

335:デフォルトの名無しさん
08/09/01 22:19:35
VC++単体パッケージにはコンパイラしかついてないのか

336:デフォルトの名無しさん
08/09/01 22:59:15
>>332
いやまあその理解でもあまり困らないと思う。

337:デフォルトの名無しさん
08/09/01 23:25:10
まぁ、VC6と言うとMFCを使えることを想定されるな。

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

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


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

341:デフォルトの名無しさん
08/09/04 01:52:49
>>340
その通りの効果。リンク時に重複した定義を許し、1つにまとめる。
URLリンク(msdn.microsoft.com)

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

343:デフォルトの名無しさん
08/09/04 21:06:21
途中で送信してしまいまして、すいません。

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

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

344:デフォルトの名無しさん
08/09/04 21:55:55
領域を指定する

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

346:デフォルトの名無しさん
08/09/06 10:23:30
昨日勉強始めました。

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

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

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

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

347:デフォルトの名無しさん
08/09/06 10:40:55
それ理解できないなら別のことやった方がいい

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

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


350:デフォルトの名無しさん
08/09/07 21:07:28
>>349
URLリンク(d.hatena.ne.jp)

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

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

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

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

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

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

357:356
08/09/08 00:25:56
正しくは「'scanf' の宣言を確認してください。」でした。

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

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

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

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

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

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

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

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

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

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

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

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



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

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

URLリンク(www.vcppclub.com)
ここを見たら1行も書かずに、読み込み/保存機能はできてしまったのですが、疑問が。

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

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

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

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

367:デフォルトの名無しさん
08/09/08 18:35:50
派生した部分しか見てないんだろ

368:デフォルトの名無しさん
08/09/08 21:37:06
オリビア派生

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

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

370:デフォルトの名無しさん
08/09/09 06:11:23
ひとりごとです

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

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

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

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

374:デフォルトの名無しさん
08/09/09 11:28:37
typedef struct tagTest {
unsigned int x :1;
} Test;

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

375:デフォルトの名無しさん
08/09/09 11:31:25
>>374
ビットフィールド

376:374
08/09/09 11:43:07
素早い回答、ありがとうございました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

384:デフォルトの名無しさん
08/09/09 15:36:11
メニューから直接よべる

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

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

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

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

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4667日前に更新/181 KB
担当:undef