★初心者にVisual C++を教えるスレ★ Part31at TECH
★初心者にVisual C++を教えるスレ★ Part31 - 暇つぶし2ch159:デフォルトの名無しさん
08/08/14 20:53:15
>>153
PICとPCをUSBで接続していて、親指先が+で他4本が-のスイッチで組み合わせによるPCへのキー入力をしたいのですが、
PICまではできてるんですが、PCのキーボードでキーを押した時と同じようにPC上に送出する関数というかメッセージというか流れが知りたいのです。

160:デフォルトの名無しさん
08/08/14 21:00:26
>>154
その辺の流れがちょっとわからないのですが、キーダウンメッセージはアクティブなウィンドウに対して受取分岐がソフト上にある場合に機能するもの
なんですよね。キーが押されたメッセージ事態を作り出すにはどうすればいいんでしょうか?

161:デフォルトの名無しさん
08/08/14 23:47:50
Visual C++ 2008 Express Editionを落としてインスコしてて、諸事情でアンスコしてインスコし直そうと思ったのですが
どれをアンスコすればいいのかわかりません
C++をアンスコすれば全てアンスコされるのではなく、C++と一緒に複数同時にインスコされてました
それぞれ個別にアンスコしないといけないようです
C++ アンスコでぐぐっても的したページがヒットしません
どれを消すべきかわかる方いましたらお願いします

162:デフォルトの名無しさん
08/08/14 23:48:28
アクティブじゃなくてフォーカスのあるウインドウ

163:デフォルトの名無しさん
08/08/14 23:49:44
アンダースコートがどうしたって?

164:デフォルトの名無しさん
08/08/15 01:35:20
アポリケーションの追加と削除で、VCEEとインストロール日時が同じで、見覚えの無いやつを全部消しちゃえば?

165:デフォルトの名無しさん
08/08/15 01:56:31
SQL Server CompactとWindows SDKとあと何があったっけ?

166:デフォルトの名無しさん
08/08/15 07:03:44
>>161
Microsoft .NET Framework 3.5
Microsoft .NET Framework 3.5 Language Pack - 日本語
Microsoft Visual C++ 2008 Express Edition - 日本語
Microsoft Windows SDK for Visual Studio 2008 Express Tools for .NET Frameword
Microsoft Windows SDK for Visual Studio 2008 Express Tools for Win32
Microsoft Windows SDK for Visual Studio 2008 Headers and Libraies
MSDN Library for Microsoft Visual Studio 2008 Express Edition
Microsoft Silverlight


167:161
08/08/15 09:12:27
(TдT)アリガトウございました無事インスコ出来ました

168:121
08/08/15 16:16:15
コードに問題があれば指摘してください。
以下のページに記載されている方法を試しましたが、効果がありません。
URLリンク(homepage3.nifty.com)
本体のウィンドウでは、このような現象は起きません。
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。

169:デフォルトの名無しさん
08/08/16 13:39:15
これまではC言語の学習用にEmacsを使用していたのですが、今回VisualStudio2008を購入しました。
そこで質問なのですが、VisualStudio2008にはEmacsのようにtabキーを押したときに必要なだけ字下げする機能がありますか?


170:デフォルトの名無しさん
08/08/16 20:18:08
複数行選択時の、TAB、ShiftTABの動作が近い?

171:デフォルトの名無しさん
08/08/16 20:22:56
>>169
とりあえずキーバインド設定は変更したのか?

172:デフォルトの名無しさん
08/08/16 20:48:58
ちょっと質問があります。

std::cout << std::toupper('a') << '\n';
std::cout << toupper('a') << '\n';

この二つは何か違うのでしょうか?
上のやつは #include <cctype> しないといけないようだが・・・

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の操作に関しては
いまいち分からないので原因が分かりません。
どなたか分かる方は折られるでしょうか?よろしくお願いします。

390:デフォルトの名無しさん
08/09/10 15:16:29
なんかおかしいね。
PCの時計はくるってない?

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

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

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

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

395:デフォルトの名無しさん
08/09/10 19:45:00
ヌルポ

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

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

398:デフォルトの名無しさん
08/09/11 01:20:13
そのwaitに一体何の意味が?

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

400:デフォルトの名無しさん
08/09/11 08:08:02
何のために待つのか考えろよ

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

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

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

次レスに続きます

402:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/11 09:51:27
>>401
VC2008とboostいれようぜ。
そしたら簡単。serializationとか

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

405:401
08/09/11 09:57:19
すんません
業務で、VC6と指定なのです。

406:デフォルトの名無しさん
08/09/11 10:02:12
この辺参照。

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




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

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

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

URLリンク(www.utj.co.jp)
URLリンク(www.utj.co.jp)
URLリンク(www.sutosoft.com)
URLリンク(www.sutosoft.com)
URLリンク(hp.vector.co.jp)
URLリンク(www.s34.co.jp)

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

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

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

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

URLリンク(www.boostpro.com)

414:デフォルトの名無しさん
08/09/11 17:15:00

このサイトで解説している、以下の部分
URLリンク(www.sutosoft.com)
// ●ファイルから読み込む。●
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:デフォルトの名無しさん
08/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の中核技術として期待されている。
URLリンク(bizex.goo.ne.jp)


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

417:デフォルトの名無しさん
08/09/11 19:58:31
CComVariantとか使うべき

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


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

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

while (rp != '\0') {



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

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

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

422:デフォルトの名無しさん
08/09/12 11:46:14
初心者スレでやることとは思えない

423:デフォルトの名無しさん
08/09/12 11:56:30
コピペ

pDoc->load(_variant_t(L"URLリンク(majissuka.com)"),

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

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

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


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

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

429:デフォルトの名無しさん
08/09/12 19:05:27
Discは光学メディア
Diskは磁器媒体

430:デフォルトの名無しさん
08/09/12 19:13:23
CDはソニーが作ったから

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


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

433:デフォルトの名無しさん
08/09/12 19:46:30
>Discは光学メディア
>Diskは磁器媒体
MOはどっち?

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

435:デフォルトの名無しさん
08/09/12 19:48:37
URLリンク(e-words.jp)
光磁気ディスク 【MO】
読み方 : ひかりじきディスク
別名 : Magneto-Optical disk

436:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/12 20:24:20
>>436
unsigned char *buf[2] ={"0x01","0x02"};
textBox1->Text = buf[0];


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

439:デフォルトの名無しさん
08/09/12 21:14:27
テキストボックスに "あいう"と表示してみろ

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

441:デフォルトの名無しさん
08/09/12 22:53:49
基本的なことなんですけど


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


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


443:デフォルトの名無しさん
08/09/12 22:58:38
有料

444:デフォルトの名無しさん
08/09/12 23:00:42
そうですか。

いくらですか?


445:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/12 23:15:48
>441
キー入力をチェックしてもいいけど
マウスで入力する場合もありえるから
入力内容が変った時のイベントでやるのが無難

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

 String^ folderName;

の ^ ってなに?



448:デフォルトの名無しさん
08/09/14 01:26:01
>>447
ハットサイン、或いは山形アクセント記号。

449:デフォルトの名無しさん
08/09/14 01:30:56
C++/CLIのスレで聞いて来いw

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


451:デフォルトの名無しさん
08/09/14 10:09:05
今まで普通に使えていたのですが突然MessageBoxが使えなくなりました。

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

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

452:デフォルトの名無しさん
08/09/14 10:32:27
デフォルトはマルチバイトじゃないはずだから
いらんところいじってるだろ

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

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

455:デフォルトの名無しさん
08/09/14 13:12:52
マルチバイトかUnicodeか

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

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

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

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

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

>>459
エントリポイントだけはあるが、実装されているのはごく一部の例外的存在。
URLリンク(msdn.microsoft.com)

461:デフォルトの名無しさん
08/09/14 14:32:09
TEXT/_Tマクロをちゃんと使った参考書って少ないよな

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

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

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

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

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

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

466:デフォルトの名無しさん
08/09/14 19:24:42
いや、ジェネリックテキストなんて、VCにしかないでしょ。

467:デフォルトの名無しさん
08/09/14 19:28:35
>>466
またまた御冗談を

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

468:デフォルトの名無しさん
08/09/14 20:36:49
それでもWindows限定じゃん。

469:デフォルトの名無しさん
08/09/14 20:42:29
まあWindows APIだしね。

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

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

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

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

472:デフォルトの名無しさん
08/09/15 06:19:51
C++はプログラミング言語です

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

474:デフォルトの名無しさん
08/09/15 09:15:21
IME使う


475:デフォルトの名無しさん
08/09/15 09:29:19
説明してあるHPなんかあったら紹介して欲しいです

476:デフォルトの名無しさん
08/09/15 09:44:21
つ[msdn]

477:デフォルトの名無しさん
08/09/15 09:52:50
初心者にやさしくヽ(`Д´)ノ

478:デフォルトの名無しさん
08/09/15 10:03:22
URLリンク(msdn.microsoft.com)
ここにIME関連のapiの一覧があるから
適当なapiの名前でぐぐれば何か見つかる

479:デフォルトの名無しさん
08/09/15 10:06:30
ありが㌧

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

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

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

481:デフォルトの名無しさん
08/09/16 18:22:45
質問です。

VisualC++ 6.0 MFC
WindowsXP SP3

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

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

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

482:デフォルトの名無しさん
08/09/16 18:29:52
業務用ソフトだったら外注に頼むだけ

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

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

484:デフォルトの名無しさん
08/09/16 18:42:21
画面をビットマップ保存するプログラム

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

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

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

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

487:デフォルトの名無しさん
08/09/17 06:44:43
>>481
モニターのカラーのビット数が違うとか


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

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

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

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

492:デフォルトの名無しさん
08/09/17 16:44:02
スレ違い

493:デフォルトの名無しさん
08/09/17 16:54:08
>>492
死ねアホ。

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

495:デフォルトの名無しさん
08/09/17 17:05:43
ここC++スレじゃないけど

496:デフォルトの名無しさん
08/09/17 17:07:42
>>494
boost::ptr_vectorを使うか、boost::smart_ptrでポインタを包む

497:デフォルトの名無しさん
08/09/17 17:08:26
Visual 「「「「C++」」」」」」

498:デフォルトの名無しさん
08/09/17 17:08:28
×boost::smart_ptr
○boost::shared_ptr

std::auto_ptrはだめです

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

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

501:デフォルトの名無しさん
08/09/17 17:15:39
↑今日一番のアホ

502:デフォルトの名無しさん
08/09/17 17:31:33
>492,495,500
痛いな

503:デフォルトの名無しさん
08/09/17 18:00:34
寧ろ>493,497,501,502が痛い罠。

504:デフォルトの名無しさん
08/09/17 18:14:29
いやいや、俺に言わせれば
>502,503
が必死w

505:デフォルトの名無しさん
08/09/17 18:15:20
C++やC#やるのにどのソフトがお勧めとかある?

506:デフォルトの名無しさん
08/09/17 18:28:10
とりあえず2008 Express Edition使っとけ

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

508:デフォルトの名無しさん
08/09/17 19:19:56
お前に使えるのか不安に思った

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

510:デフォルトの名無しさん
08/09/17 21:23:22
>>507
グダグダ言ってる間に使ってみればいいだろ

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

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

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

514:デフォルトの名無しさん
08/09/18 21:07:25
Enable: ボタンを選択可能または選択不可能に設定します。

515:デフォルトの名無しさん
08/09/19 09:06:37
CとC++の違いって何ですか?

516:デフォルトの名無しさん
08/09/19 10:07:07
一言では言い表せない

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

518:デフォルトの名無しさん
08/09/19 14:35:32
人による

519:デフォルトの名無しさん
08/09/19 15:15:31
VC++のほうが低スペック
コンパイル速度はBCC

520:デフォルトの名無しさん
08/09/19 15:18:52
そんなどうでもいいことで選ぶやつもいるんだ

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

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

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

よろしくお願いします。

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



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

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


524:デフォルトの名無しさん
08/09/20 16:52:36
bitbitがある


525:デフォルトの名無しさん
08/09/20 16:59:53
このソースで初めて、windowsの標準で描写できるのを知った

おまいらSaGa4つくろうぜ!
URLリンク(www.geocities.jp)

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

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

527:デフォルトの名無しさん
08/09/20 17:31:06
正直向いてない

528:デフォルトの名無しさん
08/09/20 20:25:09
bitbltだろww

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

530:481
08/09/20 22:24:56
解決しました。

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

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


531:デフォルトの名無しさん
08/09/20 22:29:28
なんつう糞プログラムだ

532:523
08/09/20 23:17:20
>>524 >>525 >>528 >>529

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

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

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


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

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

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

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

534:デフォルトの名無しさん
08/09/20 23:43:50
コピペ、クレクレ厨かよ

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

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

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

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

539:デフォルトの名無しさん
08/09/21 19:44:47
C++はマスターしてから書きましょう

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

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


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

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

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

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

542:デフォルトの名無しさん
08/09/21 20:35:39
ガイル乙www

543:デフォルトの名無しさん
08/09/21 20:36:22
少佐!お疲れ様であります!

544:デフォルトの名無しさん
08/09/21 21:27:48
>538
このへんを参考に
URLリンク(www.microsoft.com)

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

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

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

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

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

550:デフォルトの名無しさん
08/09/22 18:21:41
URLリンク(forums.microsoft.com)

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

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

552:デフォルトの名無しさん
08/09/22 18:54:56
>>540の回答お願いします。

553:523,532
08/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:デフォルトの名無しさん
08/09/22 18:58:30
>552
PHPを少し扱える程度じゃVCは無理
もうちょっと初心者向けの言語をお勧めします。

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

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

557:デフォルトの名無しさん
08/09/22 19:29:20
コピペ君には教えるだけ無駄

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

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

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

560:デフォルトの名無しさん
08/09/23 13:30:31
>>556
DCにつながってるデバイスってディスプレイだったりプリンターだったりするじゃない?
そういうデバイスを指定しないで作ったDCはビットマップがデバイスなんだよ。
だから自分でビットマップを作りそれをDCに選択してそのDCにTextOutすると
そのビットマップに文字が描かれる。
そのビットマップをウィンドウのDCにBitBltすれば画面上で見られるってわけ。

561:デフォルトの名無しさん
08/09/23 13:42:57
visual studio 2008 express を使用しています。
現在あるオープンソースソフトウェアをソースからビルドしようとしているのですが、
ビルドに際し、環境変数が見つからないと言われます。

windowsOSの環境変数は指定されている通り設定しているのですが、エラーが起こります。
確かvisual studio自体にも環境変数を指定する箇所があったと思うのですが、
場所がわかりません。

visual studio自体に環境変数を指定する場所があるならば、
その方法を教えていただきたいです。

562:デフォルトの名無しさん
08/09/23 13:49:35
すいません。
スレ違いのようですね・・・
失礼いたしました。

563:デフォルトの名無しさん
08/09/23 13:53:25
さようなら

564:デフォルトの名無しさん
08/09/23 16:36:04
新規プロジェクト追加時に、自分で設定した値を常に反映させることは可能でしょうか。
具体的には警告レベルを4として、新規プロジェクトが作成されることを望んでいます。

565:デフォルトの名無しさん
08/09/23 16:48:50
お使いの製品のグレードあるいはユーザーの知的レベルによって可能

566:デフォルトの名無しさん
08/09/23 16:51:39
VS2005EEです。知能は未アカデミックです。

567:デフォルトの名無しさん
08/09/23 18:01:03
エンタープライズエディションをばかにするな あやまれ!!


みたいな。

568:デフォルトの名無しさん
08/09/23 18:35:19
カスタムプロジェクトを使用
マクロで設定
既存のプロジェクトをコピーして使いまわす。
プログラム、スクリプト等で定義ファイルを書き替え
VSにパッチを当てて改造する。

569:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/24 16:12:20
リリースビルド

571:デフォルトの名無しさん
08/09/24 16:18:03
勉強?
その出力で困るやつがいるのか?
遊びじゃないんだからいい加減にしろ

572:デフォルトの名無しさん
08/09/24 16:30:52
無料になってから馬鹿が増えたな

573:デフォルトの名無しさん
08/09/24 22:37:53
>>569
Googleで検索しろ
遊びじゃないんだからそのくらい自分で調べろ

574:553
08/09/25 08:33:12
>>559 >>560
大変分かりやすい説明ありがとうございました。
やりたかったことが実現できました。

575:デフォルトの名無しさん
08/09/25 12:49:58
>>569
例外は文字通り例外的なことが起きた場合に使うもので、実行を中断せざるを得ないぐらいの場合にしか使わないほうがいい。
そんな滅多におきないことのためにifをたくさん書くのは面倒だしテストが大変になる。だから例外を使って楽に例外処理を実装する。



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