■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

VisualC++相談室 6
501 名前:デフォルトの名無しさん :02/03/01 21:29
FindFirstFileでファイル情報を構造体に受けたんですが、
そのファイル情報を使って検索したファイルがフォルダかどうか判定したんですけど
なぜかちゃんと判定したり判定しなかったり。

なんちゃら(失念)AttributeDirectoryじゃはんていしきれないのでしょうか?




502 名前:デフォルトの名無しさん :02/03/01 21:49
501はくだけちった!
501はくだけちった!
501はくだけちった!

503 名前:501 :02/03/01 23:52
漏れの素ボケか?
まじでわからん。
たしけて。

504 名前:デフォルトの名無しさん :02/03/01 23:55
しかし504にまわりこまれた!
しかし504にまわりこまれた!
しかし504にまわりこまれた!
>>503
検索しろホゲェ

505 名前:教えて :02/03/02 00:14
MFCのDLLで作成したクラスを、MFCのEXEで作成したクラスを呼ぶと、
コンストラクタとデストラクタがLNK2001となります。
どうしてだか教えてください。

506 名前:デフォルトの名無しさん :02/03/02 00:15
あなたの質問がよくわかりません。
どうしてだか教えてください。


507 名前:デフォルトの名無しさん :02/03/02 00:16
しかし505の日本語は通じなかった!
しかし505の日本語は通じなかった!
しかし505の日本語は通じなかった!

508 名前:デフォルトの名無しさん :02/03/02 00:16
翻訳ソフト?

509 名前:デフォルトの名無しさん :02/03/02 00:51
はいはい、ネタは他所でやってね。ここ質問スレだから。

505 の内容の予測:
 「MFC を使ったクラスを作って DLL にしました。ところが、
  このクラスを他から使おうとすると LINK エラー 2001 に
  なります。どうしてでしょう?」
予測に対するヒント:
 「DLL に置いたクラスはエクスポートされていますか?」

510 名前:デフォルトの名無しさん :02/03/02 00:54
>>501
普通はできるからね。10人中99人は「君のやり方が間違っている」と言うと思うよ。

511 名前:デフォルトの名無しさん :02/03/02 01:33
>510
(;´д`)ノ せんせぇ〜、一人頭9.9人の影分身ですかぁ〜?
そのノルマはデスマーチ中の体にはきつすぎると思いま〜す。

512 名前:501 :02/03/02 02:19
うむ。
ありがとう。

513 名前:デフォルトの名無しさん :02/03/02 09:51
マウスの左ボタンが"押されている"かどうかを、
WM_LBUTTONUP/WM_LBUTTONDOWN 系の処理を使わず、
(できればAPI1つ呼ぶだけで)取得できる方法はあるでしょうか?

514 名前:デフォルトの名無しさん :02/03/02 10:02
>>513
GetKeyStateみたいな仮想キーコードを
取得するAPIで、VK_LBUTTONやVK_RBUTTONを
見るってのは?


515 名前:513 :02/03/02 10:20
>>514
 有難うございます。その方法でいけました。(^^)
GetKeyState(...)って、シフト取る時位しか使わないと思ってました。
勉強不足でしたね。逝ってきます。

516 名前:デフォルトの名無しさん :02/03/02 20:30
VC++って、Cも使えるんだよね?
Cだけの知識で、C++は知らなくてもアプリ作れるんだよね?


517 名前:デフォルトの名無しさん :02/03/02 20:50
>>516
はい。


518 名前:デフォルトの名無しさん :02/03/02 21:04
んでは、Cだけ1ヶ月勉強して、すぐVC++買って遊ぶ、というのもありですね?
C++覚えてから買おうと思ってたけど、C++って結構時間かかるそうなんで。


519 名前:デフォルトの名無しさん :02/03/02 21:05
>>518
> んでは、Cだけ1ヶ月勉強して、すぐVC++買って遊ぶ、というのもありですね?
VC++ で Win32 アプリケーションを作って「遊べる」ようになるのは、C 言語だけで
はなく Win32 の仕組みを知る必要があるぞ。そっちの方が大変。

520 名前:デフォルトの名無しさん :02/03/02 21:05
VC++でもCはできるよ
Cの開発環境としてもVCはとても使いやすい

521 名前:デフォルトの名無しさん :02/03/02 21:13
>>520
でも主要ライブラリがC++向けだよね・・・・

522 名前:デフォルトの名無しさん :02/03/02 21:16
数時間前にscribbleを見ながらVCを触ってるんだけど、
ビルドするプロジェクトタイプに、デバッグとリリースの二種類
あるって書いてあります。テスト版と製品版の違いのような
ものだろうと想像してるんですが、プログラム的にはどう違うんでしょう。
デバック情報が付かないだけですか?

523 名前:デフォルトの名無しさん :02/03/02 21:18
>>522
だと思うけど・・・
デバッグモードでデバッグしてバグがなくなったらリリースでビルド。配布。

524 名前:デフォルトの名無しさん :02/03/02 21:17
分厚い「プログラミングWindows」を読んでがんばる、と。

525 名前:デフォルトの名無しさん :02/03/02 21:19
>522
あと重要な違いとして、メモリの配置とかが違ってきます。
それでデバッグでは動くけどリリースでは動かない!なんてバグが
出てきたりするので、最終的にはリリースできちんと動いてデバッグ
終了とした方がいいですね。

526 名前:522 :02/03/02 21:32
>>523 >>525
レスさんきゅ。とりあえず今の状態(scribble見ながら)ではデバッグ
タイプつーことですね。

さて、僕の最初の山場はどの辺でしょうね。BCBでのWindowsアプリ
経験は1年ぐらいです。Doc/Viewモデル?に慣れるのに苦労しそうです。

527 名前:デフォルトの名無しさん :02/03/02 22:01
デザパタ本か解説HPかなんかでObserver Patternを調べとくと吉。< DocView


528 名前:デフォルトの名無しさん :02/03/02 22:05
>526
もはや手遅れのようだが
アマチュアがGUIアプリ作るなら
VC&MFCのメリットはまるでなし。
VBかC++Builder,Delphiにしとけ。

529 名前:522 :02/03/02 22:26
>>527 はーい。混乱してきたら調べてみます。
>>528 手遅れなんて言わないでよー。4月からプロを目指さなきゃ
いけないのに。

今のところMFCでズガーンってMDIアプリが出来ちゃうのにはすごいと思ったけど
作られたファイルにセミコロンなしの文(MESSAGE_MAP)にはビビッた。
怖いなVC!

530 名前:デフォルトの名無しさん :02/03/02 22:49
cl /Eでフィルタリングして MESAGE_MAP がどう展開されるか見てみれ!

531 名前:デフォルトの名無しさん :02/03/03 00:04
あのーポインターをファイルマッピングで共有した場合、
そのポインターの示す先も共有されますか?

532 名前:デフォルトの名無しさん :02/03/03 00:27
されません。


533 名前:デフォルトの名無しさん :02/03/03 01:56
>>529
継承とオーバーライドができればそんなに問題無いと思う。


534 名前:531 :02/03/03 02:39
>>532
そうですかー
そういったことしたい場合どうすればいいんでしょー?

535 名前:デフォルトの名無しさん :02/03/03 02:47
はあー
とーぜんー、ぽいんたーのー、さししめすさきもーー
共有めもりにー、おけばー、いいんでわーー?


536 名前:デフォルトの名無しさん :02/03/03 02:53
>>534
別プロセスからファイルマッピングにアクセスした場合に
同じメモリアドレスにマップされる保証はない。

アドレスを持つんじゃなくて共有メモリ内のデータへのインデックスを
持つようにしとけ。

>>535は無視。


537 名前:デフォルトの名無しさん :02/03/03 03:17
VC6.0enterprise editionかったんだけど

ヘルプがない。
どれをいんすとーるしたいいのかね?

538 名前:デフォルトの名無しさん :02/03/03 03:22
msdnがヘルプをかねている

539 名前:デフォルトの名無しさん :02/03/03 03:26
>>538
スマソ。
そしてありがとう。

ここの板の人やさしいニダ。

540 名前:API初心者の名無しさん :02/03/03 04:13
すいません、質問があります。

フロッピーやPCカードなどのボリュームシリアルを変更しようと思うのですが、
そのAPI関数がわかりません。

ヒントでいいので教えてください。


541 名前:537 :02/03/03 04:24
スマソ。
ちょっといいですか。
そのmsdnで調べものしたんだけどちょっと詳しいことを調べようとすると
トピックが見つかりません などといわれてしまいます。

例:OFNHookProc

VC関連は全てインストールしたはずなのですが、、、


542 名前:デフォルトの名無しさん :02/03/03 05:59
>>541
「検索」タブを使おう

543 名前:デフォルトの名無しさん :02/03/03 06:00
>>540
SetVolumeLabel()

>>541
それはチミが書く関数名のとりあえず付けた名前だから

544 名前: :02/03/03 07:04
>>540
SetVolumeLabel() はボリュームラベルは書き換えられるけど
ボリュームシリアルは書き換えられない。
つーか、他のスレで SetVolumeInformation って誰か書いてたろーよ。
まあ、MSDN には書いてないけどね。
(GetVolumeInformationならある。もちろん書き換えなんて出来ないが)
とりあえず、SetVolumeInformation とか、IRP_MJ_SET_VOLUME_INFORMATION を
google で検索してみるがよし。
簡単に出来ちゃ困ることだから、簡単には出来ないようにしてあるんだろう。

>>541
MSDNライブラリのインデックスは貧弱だから、キーワード(N)タブで見つからない奴は
検索(S)タブの方で探すと出てくることがある。
もちろん今回の場合 >>543 はタダの知ったか君で、
OFNHookProc もちゃんと見つかるぞ。

545 名前:543 :02/03/03 07:13
うそ書いてすいません。

546 名前:デフォルトの名無しさん :02/03/03 15:13
ListBoxってインデックス指定してストリングの更新ってできませんか?
とりあえずINSERTしてDELETEしてるけど数多いと重そう

547 名前:デフォルトの名無しさん :02/03/03 17:27
>546
俺もDELETE→INSERT してるよ。
自動ソートとか、再描画は OFFにしておく。

548 名前:537=541 :02/03/03 17:59
再セットアップしてみたんですがやっぱりできません。
設定がおかしいのでしょうか。。。

神はググレとおっしゃっているみたいです。
テレホ厨なのにどうしろと(泣)

549 名前:デフォルトの名無しさん :02/03/03 18:04
>548
OFNHookProcなら普通にキーワード検索で出てきたよ。
MSDNで設定言っても特にないような気が。
google使うならそれでいいのだろうけど。

550 名前:デフォルトの名無しさん :02/03/03 18:23
「検索」ではなくてキーワードのリンクをクリックしても
ページが表示されないって言ってるのか?
それはいくらがんばってもできないから、素直に検索タブ使え。

551 名前:537=541 :02/03/03 18:56
>>549
>>550
ありがとうございます。
サブセットでドキュメント全部を指定したらできました。すいませんでした。

けど、
例えばですが、トピックGetOpenFileName(日本語のドキュメント)から
1番下の参照:OFNHookProcやOPENFILENAMEやSHBrowseForFolderの
リンクをクリックしてもトピックが見つかりませんと表示されてしまいます。
GetSaveFileNameはきちんと表示されます。

↑と、書こうとしたんですが、
リンクをクリックするときも左上のアクティブサブセットを
すべてのトピックにしないといけなかったみたいです。
解決しました。
まじでづんまぜん(涙声)
ありがとうございました。回線切って逝ってきます。




552 名前:デフォルトの名無しさん :02/03/03 20:11
MFCのウィザードを使わずに、MDIを実現する方法。
誰かわかるかたおられますか?
そう、ちょうどタブブラウザみたいな感じです。



553 名前:デフォルトの名無しさん :02/03/03 20:29
マルチポストかよ。


554 名前:デフォルトの名無しさん :02/03/03 20:43
かんけーねーけど、あっちのスレで問題の答えがでてなくて、
1日置いてんだから、まるちぽすっていわないんじゃねーの?

555 名前:デフォルトの名無しさん :02/03/03 20:46
1日置いたらってなんだよ。何ルールだよ。
つーかあっちでもスケルトンのソース見れって答え出ただろ。

556 名前:デフォルトの名無しさん :02/03/03 20:48
私も関係ないですけど、上に同調しますよ。
困っておられるんですから、威張っていないで
答えてあげたらどうですか?
現に、ほとんど知られてないようですし…。私も含めて。
それとも、「マルチポストかよ。」といいつつ、解ってないとか?


557 名前:デフォルトの名無しさん :02/03/03 20:49
自作自演カコワルーイ

558 名前:デフォルトの名無しさん :02/03/03 20:50
>>552=554=556
くだんねーことでageんな

559 名前:デフォルトの名無しさん :02/03/03 20:55
MDIのソースって見たことなかったんで、
見てみたのですが、新規作成のソース、って
クラスウィザードでも、見れないのでは?



560 名前:デフォルトの名無しさん :02/03/03 20:56
>>552
いまどきMDIなんてカコワルイから<SDIでMIDIでも聞ける様にしなさい。

561 名前:デフォルトの名無しさん :02/03/03 21:01
>>559
はぁ??質問内容がころころ変わる奴だな

562 名前:デフォルトの名無しさん :02/03/03 21:03
>>560
爆笑!まったく問題解決になってない。
読んでるだけでも面白いですね。
552のかた、MDIで何がしたいのですか?


563 名前:デフォルトの名無しさん :02/03/03 21:06
ジサクジエンのage荒らしカコワルイ。

564 名前:デフォルトの名無しさん :02/03/03 21:07
ネタにマジ略

565 名前:デフォルトの名無しさん :02/03/03 21:07
このままでは放置決定してしまいますよ

566 名前:デフォルトの名無しさん :02/03/03 21:08
こういう展開の常として、無意味にageてるヤツが犯人=悪。


567 名前:デフォルトの名無しさん :02/03/03 21:12
もしかすると「ウィザード使わずに」ではなく「MFC使わずに」作りたいから
こっちで質問し直したのかも、と無理矢理好意的に解釈してみるテスト。

568 名前:デフォルトの名無しさん :02/03/03 21:12
つーか文章の特徴で自作自演がもろバレなんですけど。<age犯

569 名前:デフォルトの名無しさん :02/03/03 21:16
>>567
そうだろうな。
しかしウィザードとMFCの区別もつかず、あっちのスレでレスもつけず、
今までソースもみたことがなく、自作自演のage厨には
レスするだけ無駄かと。

570 名前:デフォルトの名無しさん :02/03/03 21:19
>>566
たまたまキライな奴だけが sage で書いていたら、
「こういう展開の常として、無意味にsageてるヤツが犯人=悪。」
と書く奴ハケーン。

# 俺は マルチポスト教えて君=悪 と思っていて、age/sage はどうでもいい。

571 名前:デフォルトの名無しさん :02/03/03 21:19
意外に人が居るんだな、と思ってしまった。
関係ないけど。

572 名前:デフォルトの名無しさん :02/03/03 21:21
>>570
誰もお前の意見など聞いていないが?

573 名前:がぎりなく頭の言い男 :02/03/03 21:32
タブブラウザのようにしたいなら
クライアント領域にタブこントロール貼りつけるだけだよ。

574 名前:デフォルトの名無しさん :02/03/03 22:27
こりゃ確かに自作自演だろ。
なにせ擁護してるやつが一人として解決方法書いてない。
擁護する前に教えてやれよ(w

575 名前:デフォルトの名無しさん :02/03/03 22:29
どこからどこまでが自作自演かも不明だな。

576 名前:デフォルトの名無しさん :02/03/03 22:55
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2
ファイル名 項目1 項目2 | ファイル名 項目1 項目2

1つのリストビュー(エクスプローラ風表示)のコントロール上で
左のまとまりでソート、右のまとまりでソートしたいのですが
いい方法はないでしょうか。
ファイル名でソートしたり項目1や項目2でソートしたいんですけど。



577 名前:576 :02/03/03 22:57
ソートしようとすると1行まるごとかわっちゃうんです。


578 名前:デフォルトの名無しさん :02/03/03 23:34
>>576-577
…素直に2つのリストビューにした方がいいと思うぞ。

579 名前:デフォルトの名無しさん :02/03/03 23:54
一個にまとめる理由が
「まとめて一個で選択させたいから」
なんだよな、こういう馬鹿な質問の動機って。


580 名前:576 :02/03/03 23:58
>>578
ソートした後いろいろ処理するんです。
そのときは左と右を対応させて表示させてやりたいんです。(意味不明だと思いますが)
リストビュー2つだと項目が多い時(スクロールバーがあるとき)表示がずれてしまいます。



581 名前:デフォルトの名無しさん :02/03/04 00:07
>576
ソートする時だけ別のリストビューにコピー→ソート→戻す
っつーか、そういう特殊なのは自前でソートすれ。

582 名前:デフォルトの名無しさん :02/03/04 00:11
馬鹿な理由でないのはわかった。

・ListViewのソートオプションを外しておく。
・自前で内部的にソートして、表示したい順にリストに追加する。

でOK。


583 名前:576 :02/03/04 00:21
実は581さんのやり方でやっています。
が、まともなソート方法を知らないのでもしかしたら
何かいい方法があるんでは?(関数に突っ込んで細工しておしまいとか)と思って質問させてもらいました。


すいません、バブルソートじゃクソほど時間かかりますよね(恥
「まともなソート方法」ってどんなのがありますか?
アルファベット順とかファイルサイズ順とかのソートです。


584 名前:デフォルトの名無しさん :02/03/04 00:25
件数にもよるけどC的にやるならポインタ配列でも作ってqsortかけるので十分な場合が多いね。

リストビューにつっこむデータの件数が何万件もあるとはおもえんし。


585 名前:デフォルトの名無しさん :02/03/04 00:29
>>581
VBじゃねえんだからよ。


586 名前:576 :02/03/04 01:00
>>585
楽なので。
けど、あまりいい方法ではないですよね。
>>584
クイックソートですか。
やりかた調べるか、、、

587 名前:デフォルトの名無しさん :02/03/04 01:04
あああ、STLの世界に誘いたい。


588 名前:576 :02/03/04 01:28
>>587
???

というか僕に対してのレスじゃないか、、、

589 名前:デフォルトの名無しさん :02/03/04 02:43
火葬リストビュー使えば?
自前で好きなようにデータを持てるし、動作も速いし。

590 名前:576 :02/03/04 02:56
>>589
調べる項目おしえてくらはい。

>>587
誘って。

ある行は赤に塗るとかしたいんだけどデバイスコンテキストなんたらがでてきてわからん。
ど素人にはきつい。

591 名前:デフォルトの名無しさん :02/03/04 05:01
今月末まで学生なんですけど、
今、アカデミックパックを買うと、
卒業後、追加料金とか必要になるんですか?
通常版買うべきっすか?

592 名前:デフォルトの名無しさん :02/03/04 09:25
>>583
バブルソートでも、数百〜数千くらいなら一瞬なんじゃねーの?

593 名前:デフォルトの名無しさん :02/03/04 09:27
>>591
追加料金はいらないとおもうけど、
確実に知りたいならMSにメールか電話で聞いたほうが確実。

594 名前:デフォルトの名無しさん :02/03/04 10:00
>>591

私も学生時代に買ったVC++5アカデミック版を今でも使っているな。
アカデミック版の注意読むと「購入者」の限定はあるけど、使用者
の限定はない(少なくとも、使用条件には「学生や教職員でなけれ
ばならない」という限定はない)んで「購入者本人が」使用を続ける
分には問題ない、と思うのだが。

基本的に「購入条件を満たす人が、条件を満たす買い方をしてその
まま使い続ける」のは問題ないのでは? もし、それを許さないの
なら別に特記すべきだし、契約条件にも「学生でなくなったこと」
を理由とする契約変更はなかったはず。

まあ、これは私の勝手な解釈だから、不安なら確認した方が良い。

C++ Builderは、アカデミック買って通常版(になるんだよね?)
にバージョンアップしたな。


595 名前:デフォルトの名無しさん :02/03/04 11:50
InitInstanceでWriteProfileIntで値を書き込んで,その値を
GetProfileIntで読んでからASSERTすると,失敗してしまうのは
なぜ?

教えて君でスマソ

596 名前:595 :02/03/04 11:54
SetRegistryKeyをしていなかった...
鬱氏

597 名前:デフォルトの名無しさん :02/03/04 13:08
>>592
比較・コピーのコードの書き方にもよるからな。
隣接交換法しかしらんとこ見ると、その辺の効率考えて書いちゃいないだろ。



598 名前:589 :02/03/04 15:00
>>576
"仮想リストビュー"とか"LVS_OWNERDATA"の検索でどうぞ。

一行だけ赤くするなら"オーナードロー"とか"LVS_OWNERDRAWFIXED"
の検索でどうぞ。

仮想リストビューとオーナードローは同時に使えるよ。


599 名前:デフォルトの名無しさん :02/03/04 16:07
つーかな、もう、std::sortつかえと。

600 名前:デフォルトの名無しさん :02/03/04 17:17
仮想リストビューを使って、データはSTLのコンテナクラスに持たす。
ソートにはstd::sort()を使う。これ最強。

601 名前:デフォルトの名無しさん :02/03/04 20:14
vc++勉強したての厨房ですが、
MFCはWin32APIの知識がないと理解できないものでしょうか? 
MFCはWin32APIの提供する機能をすべてカバーしているのでしょうか? 
またこれからはどちらを勉強するべきでしょうか?
教えてください。

602 名前:576 :02/03/04 20:37
ううう、みなさんありがとうとざいます。
がんばります。

あえてあげ

603 名前:Windowsってそうなの? :02/03/04 20:55
いつもは、Solarisでプログラムを作っているものです。
えーと、
Windowsで、動いてるプロセスを強制終了させようと思って、
TerminateProcess を使っていたら、
Winな人から
「それ使うと、Windows上でリソースが残る事があるから使わないほうがいいよ」
って言われました。
プロセス死ぬんだから、そのプロセスが使ってたリソースを解放するのって、
OSであるWindows側がやってくれてると思っていたのですが....
私は、アボーンなのでしょうか?


604 名前:デフォルトの名無しさん :02/03/04 20:59
あぼーん
あぼーん
あぼーん


605 名前:Windowsってそうなの? :02/03/04 21:23
あらー、そうなんだ。
んじゃ、他のプロセスからいきなりプロセスを強制終了させる時って、
Windowsじゃどうやるの?
もしかして、「そんな方法は無い」なんて落ちは無いですよね?
もしかして、もしかして、「そんなことを考える方が悪い」って落ちですか?




606 名前:デフォルトの名無しさん :02/03/04 21:34
タスクマネージャのプロセスの終了、は、ズバリそれをやっている。

WM_QUIT送って10秒待っても応答がなかったら確認ダイアログを出して
TerminateThread。

最後の手段ね。

普通は終了イベントを通知する。
受け取り側が応答し泣けりゃ、最後の手段しかない。

NTだと割とまともにリソースが削除されてるようだが、
各種ドライバのできの悪さやIE/IMEがプロセスの終了を正しくハンドリングできずに
中途半端な状態になることがある。

Win9Xでは、こりゃもう、目も当てられない様だが、ね。


607 名前:デフォルトの名無しさん :02/03/04 21:36
つまり、カーネルオブジェクトに関しては正しく解放されるが、
IE・IMEなどのWindowsの重要ないくつかのプロセスがうまくいかない場合があるってこった。



608 名前:Windowsってそうなの? :02/03/04 22:54
なるほど。
Windows2000や、XPなどのNT系カーネルで、Windowsの奥深くに入り込んで
いるアプリでない限りは、まぁ平気でしょうということですね。
Solarisなんかでもシステムコール実行中にハングしたプロセスに対して
SIGKILL送っても死なないことってあるから、そういう意味では、同じですね。

とりあえず、ちょっと安心しました。



609 名前:デフォルトの名無しさん :02/03/04 23:57
「プロジェクト」→「設定」→「一般」のMFCのスタティックライブラリを使用
が設定できなく共用DLLを使用にしかならないのですが、
使用しているものによって、設定できないと言うことはあるのでしょうか?

スケルトンを作成するところでも出ないのですが…
MS-VC++6.0のスタンダードです。

610 名前:デフォルトの名無しさん :02/03/05 00:01
>>609
スタンダード版だとMFCはダイナミックリンクでしか使えんぞ。

611 名前:デフォルトの名無しさん :02/03/05 01:55
カリカリにダイエットしたコマンドライン型(コンソール)プログラムでも
書いてるなら別だが、普通のアプリはMFCダイナミックリンクで十分。

612 名前:デフォルトの名無しさん :02/03/05 02:00
>>601
マジレスだよ。

MFCはWin32APIの知識がなくても理解できますが、APIの知識があったほうが
ベターです。
 
MFCはWin32APIの提供する機能をすべてカバーしているわけではありません。
アプリの場面によってはAPIの世話になる場合があります。
 
MFC中心に勉強して、必要に応じてよく使うAPIから覚えていけばいいと思います。

613 名前:デフォルトの名無しさん :02/03/05 02:24
Unicodeに関して質問です。
プリプロセッサに_UNICODEをつけてUnicodeで動くモジュールを作成しました。
サーバ系(NT4.0,Win2000)ではうまくいったのですが、Windows98ではエラーになります。
Windows98でうまくUnicode版を作成できる方法はないでしょうか?
それとも、やっぱり無理ですか。

614 名前:デフォルトの名無しさん :02/03/05 02:25
Windows云々より
リソースまできっちり解放して殺すスレッドライブラリなんて
見たこと無いが… こういうひとの作るプログラムは使いたくないな

615 名前:デフォルトの名無しさん :02/03/05 02:25
>>613
MSLU試してみたら。

616 名前:613 :02/03/05 02:45
>>615
ありがとうございます。
今、MSLUで検索してみました。使えそうな気がするのでさっそく試してみます。
ううっ、でも、ひっかかったのは英語のページだけ…。解読作業が…。

617 名前:デフォルトの名無しさん :02/03/05 03:01
>>616
MSDNマガジン日本版No.20でMSLUの記事が掲載されてるからまずは日本語で読むべし。
http://www.ascii.co.jp/pb/msdn/toc/bn2001_index.html

618 名前:613 :02/03/05 03:14
>>617
ラジャー。良かった。助かりました。これで何とか…。

619 名前:188 :02/03/05 07:46
vectorのpush_backで自作のクラスのオブジェクトをベクターに
入れたいんですけど、入れたとたん、クラスのchar*メンバが
つぶれてしまいます。たとえば入れる前はmyClass.name="aho"
とちゃんと入っていたのに、入れた後にはmyClass.nameに意味不明の
文字がはいってます。どうしてなんでしょう?

620 名前:デフォルトの名無しさん :02/03/05 08:01
>>619
コピーコンストラクタと
代入ちゃんと作った?

621 名前:  :02/03/05 08:02
作ってません!代入とはどうやってつくるんでしょう?

622 名前:デフォルトの名無しさん :02/03/05 08:11
myClassのポインタをvectorにいれたら

623 名前:  :02/03/05 08:12

なるほど そういう手もありました!

624 名前:デフォルトの名無しさん :02/03/05 09:33
VCのコンソールアプリで
gets(buf)
とすると入力でブロックされてしまいますが
for(;;){
if(foo()) gets(buf);
...
}
のようにキーボードから入力があったときのみgets()して
それ以外のときは別の処理を行うということはできるでしょうか?

625 名前:デフォルトの名無しさん :02/03/05 09:40
素直にマルチスレッド化しなさい。

626 名前:デフォルトの名無しさん :02/03/05 09:49
>>624
入力が標準入力でなくてよかったら_kbhit()が使える。

627 名前:デフォルトの名無しさん :02/03/05 11:41
あるクラスのメンバにテンプレートクラスを指定したいのですが。
ヘッダファイルで、

class Choge<float> *m_hoge;

のように指定すると、以下の2つのエラーが出ます。
error C2059: 構文エラー : '<'
error C2238: ';' の前に不正なトークンがあります。

なお、Cファイルでは、Choge<float> *m_hoge; の宣言で問題なく使えます。
ヘッダでエラーが出ないようにうまく記述する方法はないでしょうか。

628 名前:  :02/03/05 12:29
クラス名にポインタって使えるの?

629 名前:デフォルトの名無しさん :02/03/05 12:31
メンバの宣言なら別に class と書く必要ないのでは?

class foo {
CHoge<float> *m_hoge;
};
じゃないの?

中にclassを書くときは

class foo {
class inner { };
int bar(inner &x);
};

みたいな定義をしたいときだけでしょ。


630 名前:627 :02/03/05 12:53
>628 へ? 使えるでしょ。普通に。

>629 MFCでやってるんで、ヘッダのインクルードはCファイルでやって、
クラスの定義で他のクラスを使うときは class キーワードを使うように
してるんですけど。

631 名前:デフォルトの名無しさん :02/03/05 12:57
答え:Cファイルだから

632 名前:627 :02/03/05 12:59
うーん。CHogeを使用したいクラスの定義前に、CHoge の定義ヘッダを
インクルードすればいけますね。
でも、クラスを相互参照するときに、条件コンパイルで相互ヘッダ参照を
しないようにしてやらんといかんくなる。
すっきり書けないものですかね。

633 名前:デフォルトの名無しさん :02/03/05 13:13
だったら先行宣言だけしろよ。

class A;
class B {
A *pA_;
};

class B;
class A {
B *pB_;
};

テンプレートかどうかは全然関係ないだろ、それ。

634 名前:627 :02/03/05 13:30
いや、テンプレートクラスの場合にうまくいかないって話なんですけど・・・。

635 名前:デフォルトの名無しさん :02/03/05 14:04
もともとテンプレートというもんはそういうものだ。
先に定義を読み込む必要があるだろ?


636 名前:デフォルトの名無しさん :02/03/05 16:34
>>627
テンプレートクラスも前方宣言できなかったっけ?

template <typename T> class Choge;

637 名前:591 :02/03/05 20:21
>>593-594

アドバイスありがとうございます。

MSのサイトに、
他の、学校の一括購入用ライセンスでは、
学生個人のPCにインストールした場合は、
卒業後も、そのまま使って良いと明記されているんですが、
アカデミックパックについては詳細が書かれていませんでした。
(MSのサイトの構成って本当に情報を探しづらいですよね。)

なかなか電話も繋がらないし、もう時間もないし面倒なので、
そのまま使っても良いことにしちゃいます。
MSに怒られたら、バージョンアップなりなんなりすることにします。

詳しく書いていただいてどうもです。

638 名前:デフォルトの名無しさん :02/03/05 21:43
壁紙を変更するプログラムを作っているのですが,

SystemParametersInfo(
 SPI_SETDESKWALLPAPER,
 0,
 szPath, //壁紙のパス
 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE
);

としても,変更できません。
GetLastErrorでは,120(ERROR_CALL_NOT_IMPLEMENTED)が返ってきました。
「この関数はこのシステムではサポートされていない。」ということらしいのですが…。

全く原因が分かりません。誰か助けてください。
環境はWin98, VC++6.0, IE5.0SP2です。よろしくお願いします。

639 名前:627 :02/03/06 08:35
>636 その他みなさん。
その記述で逝けました。ご迷惑おかけしました。クラス定義名をそのまま
書いてやればよかったのですね。
普通のクラスの場合と違って、メンバ宣言時でなくて、あくまでもクラスの
定義前の先行定義としなければならないってとこがポイントでしょうか。

640 名前:デフォルトの名無しさん :02/03/06 18:15
MFCです。文字列の2次元配列を動的に生成したいと思うのですが、

CStringArray *MyArray = new CStringArray[n];
for(int i = 0;i < n;i++) MyArray[i].SetSize(m);

とやっても問題ないですかね。vector、もしくは普通のやり方がいいかな?

641 名前:デフォルトの名無しさん :02/03/06 20:56
>>638
一応解決はできたんですが、

void foo()
{
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "wall.bmp", 0)
}

とするとエラーになって、

void foo()
{
char name[] = "wall.bmp";
 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, name, 0)
}

とすると正常終了する理由がよくわかりません…


642 名前:デフォルトの名無しさん :02/03/06 21:54
VC++のツールバーにある文字を検索する欄に記憶された
文字を全部消去する方法教えてください。


643 名前:501(ハクティ) :02/03/06 22:03
プログラマはじめて3ヶ月ではじめてビット演算を知りました。


鬱だが逝かん。

644 名前:DLLが変です :02/03/06 22:12
この板には、いつもお世話になってます。
DLLなんです。
winsockを使ったDLLなんです。
このDLLを使ったアプリケーションが、どんどん遅くなるんです。
UDPのソケットを作って、クローズしてってのを何百回もやるんです。
そうすると、どんどんアプリの実行速度が落ちていくんです。
なんで?

645 名前:デフォルトの名無しさん :02/03/06 22:40
>>641
SystemParametersInfoの第3引数は非constだってことと関係があるのかも。
もっとも、それだったらコンパイルの時点で文句いわれそうだが。
あと、俺だったらパスはフルパスで指定するな。

646 名前:デフォルトの名無しさん :02/03/07 03:04
堕ちる〜 堕ちる〜
OSごと逝ったー(゚∀゚)

647 名前:デフォルトの名無しさん :02/03/07 05:55
メンバ関数テンプレートって
インスタンス生成時に型選べないの?

template<class XXX>
class CCC
{
func();
}

template<class XXX>
void CCC<XXX>::func()
{
XXX i;
}

上記の関数にさらにテンプレートを追加して
template<class XXX>
void CCC<XXX, YYY>::func()
{
XXX i;
YYY *p;
}
みたいなことはできないんですかね・・・


それとヘッダーにプロトタイプ宣言だけして
ソースにコード記述したいけど
エラーになってしまいますが仕様ですか?

しょうがないのでヘッダーにクラス宣言とコード記述してます・・・


648 名前:デフォルトの名無しさん :02/03/07 05:57
誤 インスタンス生成時に型選べないの?

正 インスタンス生成時にしか型選べないの?


649 名前:デフォルトの名無しさん :02/03/07 06:00
>>645
>>あと、俺だったらパスはフルパスで指定するな。
フルパスじゃないとプログラムで
ファイルダイアログなんか使うとパス変わりますからね

っていうかフルパス以外怖くてできないや


650 名前:デフォルトの名無しさん :02/03/07 06:16
>>647
意図が良くわからないんだけど、
> template<class XXX>
> void CCC<XXX, YYY>::func()
> {
> XXX i;
> YYY *p;
> }
その記述で、どうやって YYY の型を指定するんでしょう?

> それとヘッダーにプロトタイプ宣言だけして
> ソースにコード記述したいけど
> エラーになってしまいますが仕様ですか?
VCの仕様です。諦めてください。

651 名前:デフォルトの名無しさん :02/03/07 06:25
落ちる落ちる〜俺たち
アプリの作業データもそのままに

いつかデバッグできたら
キミに昔のバグ打ち明けられるだろう〜

652 名前:トムさん :02/03/07 08:16
SQLを実行させようと思いまして下記の様にコーディングしましたが、
"\'m_Com1\'" を読み取ってくれません。シングルコーテーションの中では
なくて、’’も含めて読み取りたいのです。どなたか教えて下さい。
ちなみに、m_Com1はメンバ変数です。

CString strSql = "Select timem,exp,tostn from jikoku where ";

if(m_Com1 == ""){
strSql+= "Stn = " + "\'m_Com1\'" + " AND ";
}else if(m_Com2 == ""){
strSql+= "Goto = " + "\'m_Com2\'" + " AND ";
}else if(m_Com3 == ""){
strSql+= "Day = " + "\'m_Com2\'" + " AND ";
}
strSql+= "Timeh = " +m_ji;
m_Recordset.Open(CRecordset::dynaset,_T(strSql));
UpdateData(true);
m_Recordset.Requery();

653 名前:デフォルトの名無しさん :02/03/07 08:36
strSql+= "Stn = " + "\'" + m_Com1 + "\'" + " AND ";

654 名前:マルチポスト止めれ :02/03/07 08:45
どうでもいいが
if(m_Com1 == ""){
strSql+= "Stn = " + "\'m_Com1\'" + " AND ";
}
m_Com1が空なら m_Com1 を足すのか?面白いな。

655 名前:デフォルトの名無しさん :02/03/08 15:09
C用に作ったライブラリをC++から使おうとしたらコンパイルエラーになりました。
ライブラリで使用している構造体の IUnknownVtbl メンバが原因です。
その構造体を宣言しているヘッダのコンパイルでエラーになります。
IUnknownVtbl はC用のインターフェイスなので当然ですが何とか簡単な修正で使用できませんか?
C++は専門じゃなく良く分からないので教えてください。

/---------------------------------------------------------------------/

UNKNWN.H 内での定義はこんな感じ

#if defined(__cplusplus) && !defined(CINTERFACE)

#else /* C style interface */

  typedef struct IUnknownVtbl          // C用なのでC++でのコンパイルが通らない!
  {
  }

#endif

/---------------------------------------------------------------------/




656 名前:デフォルトの名無しさん :02/03/08 15:26
エラーの内容は?

657 名前:デフォルトの名無しさん :02/03/08 18:12
VC++6 を使っています。
今までコマンドラインでコンパイルしてきたんですが、VC6 の IDE を使ってみようと思ったらいきなりトラブルに遭遇しました。

API 呼び出しで例外で落ちてしまうんです。

RegisterClassEx なのですが、多分 User32.dll 内に一致するシンボルが見つからないのではないかと思う
(デバッグしてみたら、
C:\WINNT\system32\USER32.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
と出ているので)
ですが、どうしたらいいのでしょうか?


658 名前:デフォルトの名無しさん :02/03/08 18:44
>>657
> C:\WINNT\system32\USER32.DLL' をロードしました、合致するシンボル情報は
> 見つかりませんでした
それは USER32.DLL のデバッグシンボルが見つからないと言ってるだけだから、
気にしなくても構わん。いちおう MS のサイトからデバッグシンボルをダウンロー
ドできるけど、一般のアプリケーション開発者にとっては、あまり有用じゃないぞ
(デバイスドライバ作ってる人間には必須だけど)。

http://www.microsoft.com/ddk/debugging/symbols.asp

> API 呼び出しで例外で落ちてしまうんです。
単に、RegisterClassEx() で初期化してないポインタを渡してるんじゃないの?
前後のソースを Copy & Paste してみ。

659 名前:657 :02/03/08 18:54
>>658
なるほど、シンボルがなんとかっていうのは関係ないんですね。

> 前後のソースを Copy & Paste してみ。

とりあえず↓のような感じです(不要なものは全部取っ払って試しました)
よろしくお願いします。

// ProjectA.cpp : アプリケーション用のエントリ ポイントの定義
//

#include "stdafx.h"

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

// 藤堂: 本当はクラスのスタティックメンバ
HINSTANCE s_hInstance = 0;
char s_szClassName[] = "testwnd";

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
  s_hInstance = hInstance;
  
  HWND m_hWnd;
  
  // ウィンドウクラス登録開始
  WNDCLASSEX wndClass;
  
  wndClass.cbSize = sizeof (WNDCLASSEX);
  wndClass.style = CS_HREDRAW | CS_VREDRAW;
  wndClass.lpfnWndProc = WndProc;
  wndClass.cbClsExtra = 0;
  wndClass.cbWndExtra = 0;
  wndClass.hInstance = s_hInstance;
  wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wndClass.hIconSm = NULL;
  wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
  wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
  wndClass.lpszClassName = s_szClassName;
  
  if (!::RegisterClassEx(&wndClass))
  {
    //std::cout << "RegisterClassExに失敗。";
  }
  return 0;
}
長すぎるので ウィンドウプロシージャは省略します。

660 名前:デフォルトの名無しさん :02/03/08 20:27
>659
とりあえず、wndClassを最初に0クリアするか、
lpszMenuNameをちゃんと設定してみてはどうだろう。

661 名前:659 :02/03/08 21:09
>>660
うぎゃぁ!そ、それ(lpszMenuName) でした…。
そんなメンバがあるって知らなかった。やっぱりゼロクリアはちゃんとするものですね…。

コマンドラインでコンパイルしている限り発生しなかったのですが、ディフォルトでスタックに確保したメモリをクリアしてくれてたんですね。

ありがとうございました。もっと精進します。

662 名前:デフォルトの名無しさん :02/03/08 21:29
標準出力や標準エラー出力を開発環境上でリアルタイムで見る方法ってないでしょうか?
VB のイミディエイトウィンドウみたいな感じのもので。

663 名前:デフォルトの名無しさん :02/03/08 22:12
>>661
たぶんデバッグビルドにしてるからじゃない?

コマンドラインからコンパイルする場合でも /GZ とか使うとチェック入るぞ。

664 名前:デフォルトの名無しさん :02/03/08 22:16
ウィンドウプロシージャで正しい終了の方法がわからない・・・。
WM_CLOSEで色々試しててWinXP落ちた・・・鬱だ・・・。

665 名前:662 :02/03/08 22:41
>>664
WM_CLOSE で DestroyWindow して WM_DESTROY で PostQuitMessage ではないでしょうか?

666 名前:デフォルトの名無しさん :02/03/08 23:04
>>665
そうしてたらウィンドウが閉じなくなったんでPostQuitMessage呼んで見た。
2〜3回起動終了してたら落ちたよ藁

667 名前:デフォルトの名無しさん :02/03/09 01:52
VCが止まる。タスクマネージャも起動せず。
XPだとVC動かないのか?

668 名前:デフォルトの名無しさん :02/03/09 02:09
>>667
Anti Virus 系のソフトを動かしてるなら、止めてみる。なんか Notron AntiVirus
動かした状態で VC のデバッガを立ち上げると死ぬことがある、とか ML で報告
されてたよ。

669 名前:デフォルトの名無しさん :02/03/09 08:56
何もこれといって動かしてないんだが。
SP4なのが原因かと思ってとりあえずSP5落としてみた。
なおるといいなぁ・・・。

670 名前:VC@2日目 :02/03/09 18:06
VCはじめて2日の超厨房です。
クリップボードから文字列を取得して、リストビューに吐き出す。
というのを作ってるのですが、うまくいきません。

クリップボードからデータは取得できるのですが、
リストビューに追加するタイミングで、文字列がおかしくなります。
おかしくなる。というのは、例えば「プログラミング」という文字列のはずが
「%d4」になってしまう。という状況です。

コードを載せておきます。

typedef struct tagClipData
{
LPSTR Strings;
LPSTR ConstStrings;

} ClipDat;
ClipDat ClipData[98];

void ChangeClip()
{

LPSTR pPtr;
HANDLE hMem;
ClipDat NewDat[98];

OpenClipboard(NULL);
hMem = GetClipboardData(CF_TEXT);
pPtr = (LPSTR)GlobalLock(hMem);
GlobalUnlock(hMem);
if (NextViewer!=0) SendMessage(NextViewer, WM_DRAWCLIPBOARD, 0, 0);

NewDat[0].Strings = pPtr;
for(int i=1;i < 99;i++){
NewDat[i].Strings = ClipData[i - 1].Strings;
}

for(i=0;i < 99;i++){
ClipData[i].Strings = NewDat[i].Strings;
}
}

void ShowMain(BOOL booCenter)
{
LV_ITEM item;

ListView_DeleteAllItems(hList);
for(int i=0; i<99;i++){

item.mask = LVIF_TEXT;
item.pszText = ClipData[i].Strings;
item.iItem = i;
item.iSubItem = 0;
ListView_InsertItem(hList, &item);
}

}


671 名前:デフォルトの名無しさん :02/03/09 18:24
>>670
GlobalUnlock()をコールしたら、GlobalLock()で取得したポインタの
指す内容は無効になってしまう可能性がある。
文字列をバッファにコピーしてからGlobalUnlock()をコールしる。


672 名前:デフォルトの名無しさん :02/03/09 20:02
全てのWindowに対するキー入力を取得するアプリって、どうやったら作れますか?
たとえば、タスクトレイに常駐して、一日で何回キーボードを叩いたかを
計測するアプリのようなものです。

673 名前:デフォルトの名無しさん :02/03/09 20:09
キーボードドライバでも作れば?
本物のキーボードドライバに透過的にイベントを投げるやつ。
DDK嫁

674 名前:(  _。。)_ バタ。 ◆lUd9keO2 :02/03/09 20:14
>>672
フックするDLL作成して、システムにひっかける。
DLLにして呼び出さないとシステムに掛からないので注意。


675 名前:デフォルトの名無しさん :02/03/09 23:09
XPでVCからプログラム実行すると運が悪いとハングするYO!
実行ファイルは直接起動でブレークポイント意味無しかYO!
SP5いれてもハングしたYO!
一番いたいのはタスクマネージャすら起動しないことだYO!

676 名前:デフォルトの名無しさん :02/03/09 23:45
 デバッグの時、deleteでポインタのメモリを開放してやるとエラーがでま
す。リリースなら問題ないのですが、これって解決策あります?

677 名前:デフォルトの名無しさん :02/03/09 23:47
>>676
何か問題があるからエラーが出ているんだろうと初心者ながらに思ってみる。

678 名前:ATL :02/03/09 23:52
ATL+COMウィザードを使って、COMコンポーネントを作ろうとしてるんですが、
ATLシンプルオブジェクトを追加=>methodを追加=>dllを作成のところでどうしても
コンパイルエラーになってしまいます。

error C2259: 'CComObject<class CMyMsg>' : 抽象クラスあるいは構造体のオブジェクトが宣言されています。

追加したメソッドはこんな感じです。

interface IMyMsg : IDispatch
{
[id(1), helpstring("メソッド MyView")] HRESULT MyView([out, retval] char* cmsg);
};

// IMyMsg
public: STDMETHOD(MyView)(/*[out, retval]*/ char* cmsg);

抽象クラスになんかしてないのに。

679 名前:デフォルトの名無しさん :02/03/10 00:01
>>676
どういうソースでどういうエラーが出るのか書かないとわからねー

680 名前:デフォルトの名無しさん :02/03/10 01:02
CMyMsgに、MyViewのメソッドが実装されてないんだろ。
つか、そのMyViewは激しくCOM規約違反。

681 名前:ATL :02/03/10 01:13
>>680
実装はしてます。return S_OK;だけだけど。

というか、ひょっとしてchar*のせいかしら・・・

682 名前:デフォルトの名無しさん :02/03/10 13:12
引数の型とか数が合ってなかったら笑いsage

683 名前:ATL :02/03/10 16:24
できまいた。
BSTR、CComBSTR ちゅうことでしたあ。

684 名前:デフォルトの名無しさん :02/03/10 18:48
LOWORD と HIWORD をつかって取り出した WORD 値二つを
もう一度元の DWORD 書き込みたいのですが、
そういうマクロはありますか?

685 名前: :02/03/10 18:51
MAKEPARAM

686 名前:デフォルトの名無しさん :02/03/10 18:53
その手のマクロはSDKのサンプルを読んでると出てくるよ。

暇なときに開いて眺めてみるとよいかも。


687 名前:684 :02/03/10 20:41
>>685-686
なるほど、この用途の為の専用のマクロまであるんですね。
ありがとうございます。

688 名前:超先生@プログラム板 :02/03/10 20:53
>>685
  ∧_∧
< `ш´>y-~~~ MAKELONGの方が適切じゃないのか?

689 名前:デフォルトの名無しさん :02/03/10 20:57
>>688

俺もそう思ったが>>684の文脈からすると必要なのはMAKEPARAM(MAKELPARAMだっけ?)だ



690 名前:デフォルトの名無しさん :02/03/10 23:09
>>688
うわあ! 超先生、何でこんなところにいるんですか!
僕と一緒に葉鍵板に帰りますよっ!^^;

691 名前:デフォルトの名無しさん :02/03/11 02:51
STLportをVC++6にインストールする方法がわかりまへん。ズビシとVC++6オンリーの
インストール解説なんぞどこにあるですか。

692 名前:デフォルトの名無しさん :02/03/11 03:05
ドキュメント嫁

どっかのディレクトリで
nmake -f vc6.mak clean install
でOKだったとは思うが。

693 名前:デフォルトの名無しさん :02/03/11 03:42
>>692それでいける。
vcvars32.bat必須だけど

694 名前:デフォルトの名無しさん :02/03/11 04:10
>>692
STLport 付属の iostream 使わないなら(UNICODE 関係とか腐ってるし)、
そもそもコンパイルも不要だし。ヘッダだけ適当なディレクトリに置いて、
そこを見るように VC6 を設定すればおしまい。

695 名前:デフォルトの名無しさん :02/03/11 05:13
>>694
UNICODE関係直ってるが?

696 名前:デフォルトの名無しさん :02/03/11 05:17
治っているというか、元からマトモだったっぽいが

697 名前:デフォルトの名無しさん :02/03/11 07:49
char_traitsがいまいちだったのでは?

698 名前:デフォルトの名無しさん :02/03/11 08:11
質問です。
関数とか打ち込むと(などを押した時に引数リストなどが表示されますが、
OS再インストなどで入れなおした場合、インスト前作った適当なプログラムで
関数とか入力した時の引数とか表示されなくなるんですが表示する方法ありません?
自作関数の引数とかは出るけど何故かWinAPI系は表示されないし・・・。

699 名前:デフォルトの名無しさん :02/03/11 08:46
>>698
リビルドしてもダメか?

700 名前:698 :02/03/11 09:13
>>699
リビルドしたらいけました・・・。
どうもです・・・。

701 名前:デフォルトの名無しさん :02/03/11 09:48
-----------------------------------------------------

Microsoft Visual Basic .NET Standard
通常パッケージ
12,800円
4月19日(金)

Microsoft Visual C# .NET Standard
通常パッケージ
12,800円
4月19日(金)

Microsoft Visual C++ .NET Standard
通常パッケージ
12,800円
4月19日(金)

-----------------------------------------------------


どれを購入するのがいいでしょうか?
MSの一押しはC#ですかね?
でもビジネスで役立つのはVB?
(都会は知りませんが地方での仕事は8割がたVB6.0です。)

う〜ん。
それよりも動作環境がXP・2000・NT4ってのが痛い。
自分は98です。
XPはVC++と相性が悪いようなので.Net専用にXPインストール済みの
超激安PCを購入しようかな〜


702 名前:デフォルトの名無しさん :02/03/11 12:45
>>701
私も、VC++を使った仕事に色目を出してるが、
現実はVBの仕事が100%。それを考えると、結局
VBだけあればいいことになる。

それよりも、OSが98では、仕事をするのは辛くないですか?


703 名前:デフォルトの名無しさん :02/03/11 18:31
できればVS.NETスレでやって欲しいなーなんて。

704 名前:デフォルトの名無しさん :02/03/11 18:59
ソースの公開されているライトウエイトなウインドウクラスライブラリないですか?
MFCのようにフレームワークを形成してないで、
ちょっとウインドウをいじるのに便利な程度に軽くラッピングしてあるだけでいいのですが。

705 名前:デフォルトの名無しさん :02/03/11 19:00
age

706 名前:デフォルトの名無しさん :02/03/11 19:17
>>704
ATL/WTL

707 名前:デフォルトの名無しさん :02/03/11 19:39
>>706
ATLみたいにコントロールもラップするほど大げさなものじゃなくて、
あくまでウインドウをラッピングしているものです。

708 名前:デフォルトの名無しさん :02/03/11 19:45
>>704
fltk (http://www.fltk.org/)

709 名前:デフォルトの名無しさん :02/03/11 20:18
>>707
だから ATL の CWindow か(メッセージマップを使いたければ)CWindowImpl
が、目的に合致すると思うが。

710 名前:デフォルトの名無しさん :02/03/12 00:20
あるウインドウを破棄すれば、そのウインドウに所属する子ウインドウはすべて自動で破棄されますか?

711 名前:デフォルトの名無しさん :02/03/12 00:26
普通は子ウィンドウにもWM_DESTROYが送られます。


712 名前:デフォルトの名無しさん :02/03/13 13:18
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_entercriticalsection.htm
::EnterCriticalSection()が出す例外「STATUS_INVALID_HANDLE」を
捕まえるにはどうしたらいいんでしょうか?

#define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L)

としか定義されてないので、どんな型で捕まえればいいのかさっぱり。

try {
  ::EnterCriticalSection(&m_oCriticalSection);
}catch (void*){
  assert(0);
}catch (char){
  assert(0);
}catch (long){
  assert(0);
}catch (int){
  assert(0);
}catch (DWORD){
  assert(0);
}catch (...){
  assert(0);
}

こうやって、どれで捕まるかなーとやってみたら、捕まえたのは最後の(...)でした。
(...)で捕まえた例外の種類を判別する方法とか、ありませんかね?

713 名前:デフォルトの名無しさん :02/03/13 13:32
>>712
構造化例外って奴か?
catchブロック内からGetExceptionInformation()とかで例外情報取れないかな?
# 実際やった事は無いんで外してたらごめんよ

714 名前:デフォルトの名無しさん :02/03/13 14:33
SEHとC++例外の区別がついていないひと、ハケーン。


715 名前:713 :02/03/13 15:23
>>714
EnterCriticalSection()がSEH投げてるんじゃねーの?って事なんだけど。
# つーか煽るだけかい

で、VC++のヘルプにこんなんあったよ。

>カスタム変換関数を指定するには、変換関数の名前を唯一の引数として
>_set_se_translator 関数を呼び出します。カスタム変換関数は、try
>ブロックを持つスタックで関数が呼び出されるたびに一度だけ呼び出されます。
>デフォルトの変換関数がないので、_set_se_translator を呼び出して変換
>関数を指定しないと、省略記号付きの catch ハンドラしか C 例外をキャッチ
>できなくなります。


716 名前:713 :02/03/13 15:24
書き忘れた。
713で書いたとおり俺はあまり詳しくないので、ヘルプの「例外処理機構の
使い分け」辺りを参照してくれ。

717 名前:デフォルトの名無しさん :02/03/13 17:07
TrueTypeFontのGlyphIndexについて質問。

GetGlyphOutlineを使うときGlyphIndexに、SJISコードを与えてもだめですか?
UNICODEにしないとだめなんでしょうか?

よろしくおねがいします。

718 名前:デフォルトの名無しさん :02/03/13 18:05
GetGlyphOutlineWはUNICODE
GetGlyphOutlineAはその時のロケールに依存

719 名前:717 :02/03/13 18:46
>>718
ありがとうございます。
#pragma setlocale("jpn")
で正しく表示されました。

しかし、UNICODEにしたほうがよさそうですね。

720 名前:デフォルトの名無しさん :02/03/13 20:02
>>713-716
ありがとうございます。構造化例外(SEH)とC++例外なんて、初めて知りました。
とりあえず、
http://www.microsoft.com/japan/developer/library/dsmsdn/deep03162000.htm
にえらく詳しく解説してありましたので、ここで勉強します。

721 名前:デフォルトの名無しさん :02/03/13 20:03
ダイアログで作成したフォルダに、
メニューをつけて、バージョン情報を開きたいのですが
可能ですか?

722 名前:712(=720) :02/03/13 20:04
す、すみません。数字ハン入れ忘れて分かりにくくした上、ageちゃって。

723 名前:721 :02/03/13 20:04
ごめんなさい。フォルダじゃなくてフォームです。

724 名前:721 :02/03/13 20:15
分かりました。
ResouseViewのところで追加をすればよかったのですね。

725 名前:522 :02/03/13 20:56
お久しぶりです。何とかscribbleぐらいのプログラムは何も見ないで
作れるようになりました。勝手ながら感想と質問を述べさせてもらうと
1.MFCはクソクソと一部で言われていますが、まだそこまで到達できてません。
MFCのデザインパターンとかが嫌われてるんでしょうか。

2.BCBに比べてVCのエディタはすごい。入力補完はかなり助かります。
でもたまにスペルミスもしてないのに出てこない(CTRL+ALT+Tでもだめ)

3.MSDNでうまく検索できない。
ドキュメントが変更されて、閉じようとしたときに保存を促すメッセージを
出そうと思ったんでが、MSDNでは見つけれず・・・。
SetModifiedFlag(買った本に乗ってた)。この辺のコツは無いでしょうか。

726 名前:デフォルトの名無しさん :02/03/13 21:00
一度だね、
薬だと思ってね、
MSDNのツリーをぽちぽち開きながらどんなウィンドウメッセージがあるのか
全部眺めてみなさい。

WM_だけじゃないよ。
たくさんあるよ。

でもきっといつか役に立つよ。


727 名前:デフォルトの名無しさん :02/03/13 21:07
1 ほかの言語やフレームワークをしばらくさわってみる
2 そう。で?
3 経験

728 名前:デフォルトの名無しさん :02/03/13 21:08
>>725
何も見ないで作れるか、すげーな。
リファレンスも見ないのか?

729 名前:522 :02/03/13 22:12
>>726-727
やっぱ時間に経験っすか。コツコツ頑張ります。

>>728
>リファレンスも見ないのか?
はい、scribble程度の物は何も見ないですね。エディタの補完機能で
薄っすらと覚えてれば何とかなります。っていうか、覚えるために
何度も同じようなの作ったし。

730 名前:デフォルトの名無しさん :02/03/13 22:51
20年前の自分を思い出す..

731 名前:デフォルトの名無しさん :02/03/14 06:57
>覚えるために 何度も同じようなの作ったし。
激しく無駄。

732 名前:デフォルトの名無しさん :02/03/14 09:10
若いうちはそういうのもありだろ。

733 名前:年中無休で働き続ける男 :02/03/14 11:48
WindowsXP vs Windows2000

どっちが優れていますか?


734 名前:デフォルトの名無しさん :02/03/14 12:28
板違い

735 名前:デフォルトの名無しさん :02/03/14 13:39
age


736 名前:デフォルトの名無しさん :02/03/14 18:07
MFCです。ビューからモーダルダイアログを呼び出しているのですが、
ダイアログ上のコントロール(例えばボタン)から呼び出し元のビューに
メッセージを送りたいのですがどのように実装すればよいでしょうか。

737 名前:デフォルトの名無しさん :02/03/14 18:20
[MFC AppWizard(DLL)]にて作成しているDLLで、ActiveXコントロールを
使用したダイアログを使いたいのですが、作成出来ません。
#DoModal()でエラー(戻り値-1)が発生します。

ご教授願えませんでしょうか。


738 名前:デフォルトの名無しさん :02/03/14 21:45
>736
ビューのポインタなりウィンドウハンドルなりを使ってSendMessageするだけですが。
それともビューの方でどうやって受け取るかって話?

739 名前:デフォルトの名無しさん :02/03/15 12:41
CoInitializeを呼んでないとか。


740 名前:737 :02/03/15 13:13
自己レスです>>737
InitInstanceの中でAfxEnableControlContainer()を
コールする事で解決しました。お騒がせしましたm(_ _)m

741 名前:デフォルトの名無しさん :02/03/15 17:45
>738
ビューのポインタを使って SendMessage しました。
クラスウィザードでユーザメッセージを如何に定義するかが分かりませんでした。
全部(マップ、ハンドラ)自前で書いてやらないとダメなのですね。
一応できたのですが、次使うとき忘れてそうなので、まとめとかなきゃ。

742 名前:デフォルトの名無しさん :02/03/15 18:38
関数呼び出し前と関数呼び出し後のメモリ状態などを調べる方法ってないですか?
関数内でヒープなどからメモリを取得した場合に関数から抜ける時点で正常にメモリが破棄されているかチェックしたいです。
呼び出し前にヒープの状態を記憶しておいて呼び出し後のヒープの状態と比べることって出来ますか?


743 名前:超先生@プログラム板 :02/03/15 18:45
  ∧_∧      
< `ш´>y-~~~ 方法はいろいろあるが。
_CrtMemCheckpointで関数呼び出し前と後のヒープ状態を記録し、
_CrtMemDifferenceにて2つを比較すればいい。
差分の内容については_CrtMemDumpStatisticsでダンプできる。

744 名前:デフォルトの名無しさん :02/03/15 19:17
めもめも

745 名前:デフォルトの名無しさん :02/03/15 19:26
他愛も無い(?)ことを聞いて申し訳ないです。
MFC(VC++6)使用でモーダルダイヤログを開くときに、
初期フォーカス位置を変えたいのですが、
OnInitDialog内で、色々試しても上手くいきません。
どうすれば初期フォーカスを変更出来るでしょうか?
(場合によって2・3点変更させるため、タブ順位変更は無理です)

746 名前:デフォルトの名無しさん :02/03/15 19:33
WM_INITDIALOGのヘルプを嫁。
穴があくまで嫁。
読んで分からなかったらあきらめろ。


747 名前:745 :02/03/15 21:00
>>746
 だいぶ説明不足でした。
InitDialogの返値はFALSEにしているので、
フォーカス?は指定の所に行くのですが、
(例として)元々のフォーカスがボタン1を指しているとして、
InitDialogで明示的にボタン2にSetFocusしても、
ボタン中央の点線(フォーカス?)はボタン2に来ますが、
ボタンの影(標準のボタン?)はボタン1にあります。
 この時、カーソルを動かさずにリターンを押すと、
ボタン1が押されたことになるというのが問題です。

 対応として、ボタン1に対する標準のボタンチェックを解除すれば、
ボタンの影はどこにも表示されなくなりますが、
この時もそのままリターンを押せば、ボタン1の押下となります。

748 名前:デフォルトの名無しさん :02/03/15 21:07
っつーか、AppWizardで作ったんだったら、ちゃんとコメントで書いてあるよな。
OnInitDialogのreturn文の後ろに。

749 名前:デフォルトの名無しさん :02/03/15 21:11
それはフォーカスの問題じゃなくてデフォルトボタンの問題だ。
デフォルトボタンの指定をはずせ馬鹿

750 名前:748 :02/03/15 21:11
>747
おっと、行き違いスマソ。ちゃんとやってたわけね。
GotoDlgCtrlで移動してもうまくいかない?


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.