[表示 : 全て 最新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辺り。

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






[ 続きを読む ] / [ 携帯版 ]

前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