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


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

★初心者にVisual C++を教えるスレ★ Part7
501 名前:デフォルトの名無しさん :03/07/29 20:23
500とられた(T_T)

502 名前:デフォルトの名無しさん :03/07/29 20:25
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


503 名前:デフォルトの名無しさん :03/07/29 21:31
自分で作ったのクラスからビュークラスの関数呼ぶって事は普通しないんすか・・・?
やり方わからん

504 名前:デフォルトの名無しさん :03/07/29 21:56
20分前〜俺は〜馬鹿だった〜
・・・あほなこと言ってごめんなさい

505 名前:デフォルトの名無しさん :03/07/30 09:25
>>495

どうもです。やはりその方法しかなさそうですね…
sedで置換してみます。
ありがとうございました。


506 名前:デフォルトの名無しさん :03/07/30 13:34
Enemy *pEnemy;

pEnemy = new Zako;

クラスへのポインタ宣言をしておいて、
あとからnewでオブジェクトを作ろうとすると、

error C2061: 構文エラー : 識別子 'Zako';

と出てしまいます。どうしてエラーなのでしょうか?

507 名前:デフォルトの名無しさん :03/07/30 13:53
>>506
includeしてないだけじゃ?

#include "Zako.h"

508 名前:デフォルトの名無しさん :03/07/30 14:58
今、学校でVC++6を弄んでるんですが、入門書のおすすめなどありましたら教授ください。

学校なので、MFCライブラリリファレンスの類は、全種あるのですが、なにぶん内容が難しすぎて…(汁)
今現在、参考にしてるのは、「独習C++」、「新VisualC++6.0入門(ビギナー編)」です。

やはり次に進むべき道は、「新VisualC++6.0入門(シニア編)」でしょうか…?
しかし通販じゃないと近所にはなさげな悪寒…

自分の知識としては、Cの基礎を一通り学んだ程度です。

509 名前:デフォルトの名無しさん :03/07/30 15:26
猫でもわかる、でいいじゃん。
本がいいと言うなら、いちおう本にもなってたはず。

内容が優れてるかと言われれば疑問だが、入門には良いと思われ。
林晴比古も悪くないけどね。

学校でとりあえず必要としてるだけならいきなりMFCでもいいけど、
まともに覚えたいんなら、まずはSDKオンリーで仕組みから理解していくべきだと思う。


510 名前:デフォルトの名無しさん :03/07/30 15:39
だから、本はスレ違いなんだよ

511 名前:デフォルトの名無しさん :03/07/30 16:08
C++はCをマスターしてから勉強したほうがいいですか?

512 名前:sage :03/07/30 16:08
初心者に教えるスレだからいいと思うけどね。
自分は林晴比古の新VisualC++6.0入門シリーズで勉強した。
がんばってくれ。

513 名前:508 :03/07/30 16:21
>>509
なるほど…猫わかもたしか本になってたんですよね…一度調べてみます。
(やっぱり本がいいです;)

>>510
すいません、スレを検索した限り、他に適当なスレが見当たらなかったのでここで質問させてもらいました。
くだ質とかの方がよかったですかね…?

>>512
このシリーズで攻め続けようか、他に乗り換えようか、少し悩んでます…<林先生の本

514 名前:デフォルトの名無しさん :03/07/30 16:58
初心者に推薦図書スレを教えるのが筋だと思うが・・・

515 名前:デフォルトの名無しさん :03/07/30 18:44
http://aiton21.tripod.co.jp/a.JPG
OKとキャンセルボタンいっこずつしかおいてないのに
リビルドしてもこんなんに表示されちゃうのなんでですか??

516 名前:デフォルトの名無しさん :03/07/30 18:45
てか三回くらい作り直しました。。。
ありえねえええ

517 名前:デフォルトの名無しさん :03/07/30 18:51
ああきにしないで

518 名前:デフォルトの名無しさん :03/07/30 20:54
教えてください。
いま自分のViewにCListCtrl m_listがあるとします。
ここでこのm_listにアイテムを追加するときにSetItemDataで構造体アドレスをセットしたいです。
この構造体はそのアイテムに関連する情報を保持しており、リストにアイテムを挿入するときにnewします。
問題なのはこのViewがDistructされるときにこのm_listがデストラクトされてもnewした構造体は自動では解放されません。
あるいはDeleteAllItemsなどを呼び出したときとか。
Viewのデストラクタでdelete m_list.GetItemData(i);などとしても
もしリストにSetItemDataしてなければ変なアドレスでdeleteしそうです。
こういうケースではどういう対処が良いですか?
CListCtrlを派生してInsertやDeleteItem系のメソッドを絞って提供し
アイテムの追加や削除を全部管理しないと無理ですか?



519 名前:デフォルトの名無しさん :03/07/30 21:04
>>513
最初は林の本でも大丈夫だと思うけどね。
ちょっと実力がついてきたなと思ったら用途に合わせたものを買えばいい。

520 名前:デフォルトの名無しさん :03/07/30 21:23
>>518
うん。

521 名前:518 :03/07/30 22:08
そうなんですか。そこを何とか。どなたか良いお知恵を。
もしくは普通こうやる、とか。
お願いします。

522 名前:  :03/07/30 23:04
>>518
仮想リストにすれば?

523 名前:  :03/07/30 23:06
>>521
SetItemData してなければ、GetItemData では 0 が帰って来る。と思う。
もし違ってたらゴメン。で、LVN_DELETEITEM だかなんだかの通知を受けて
0 じゃなければ、delete する。

あるいは new したものは View のメンバ変数 CTypedPtrList<hoge> m_items;
とかに全部入れといて、view のデストラクタで全て delete する。


524 名前:デフォルトの名無しさん :03/07/30 23:07
VC++6.0でmakeファイル使ってる人っています?
VCってmake使えるの?

525 名前:デフォルトの名無しさん :03/07/30 23:09
>524
nmakeってあるはずだよ。
さがしてみそ

526 名前:デフォルトの名無しさん :03/07/30 23:14
>>525
確かにありますね。
nmakeってコマンドラインから使うんですか?
IDEからは使えないんですか?


527 名前:デフォルトの名無しさん :03/07/30 23:14
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


528 名前:名無し@沢村 :03/07/30 23:16
学校のおじさんのつくったVisualC++真面目に勉強している、へたれたちのいるスレはここですか?


529 名前:518 :03/07/30 23:24
みなさま。ありがとうございます。
よくかんがえたらViewのデストラクタより先にm_listがなくなっていそうです。
そこでいちばん簡単な方法としてm_listにSetItemDataしたものを別個にリストにして
保持しておくことにします。なんか無駄な気もしますが。


530 名前:518 :03/07/30 23:27
>>522
仮想リストとは何ですか?


531 名前:デフォルトの名無しさん :03/07/31 00:06
すみません。文字列をdouble型に変換したいのですが、

 CString str = 2.5584;
 double don = atof(str);

とした時、donの値が"2.5583999999…"になってしまいます。
この原因が全く判らないで困っています。
どなたか解決策をご教授してください。

532 名前:デフォルトの名無しさん :03/07/31 00:07
1/3 = 0.3333333....

533 名前:デフォルトの名無しさん :03/07/31 00:34
>>531
double型は2進数であらわされます。
ですので、10進数小数を2進数に直すと丸め誤差が生じます。
つまり、double型では、正確に2.5584を表すことは原理的にできないのです。

別に実害はないので気にせず行くのがよいでしょう。

534 名前:デフォルトの名無しさん :03/07/31 01:22
>>531
有限小数、無限小数などで検索汁

535 名前:デフォルトの名無しさん :03/07/31 02:23
>>530
仮想リストビューで検索しなさい

536 名前:デフォルトの名無しさん :03/07/31 08:52
CObjectの派生クラスで、リソースに登録してあるアイコンのハンドルを取得するには
どうすればいい?ロードアイコンとかセットアイコンとかいっぱい試したけど
自分じゃむりだった・・。

537 名前:531 :03/07/31 08:56
>>533
そうだったんですか。ありがとうございました。
でも、こっちでは、どうしても文字列"2.5584"を
正確な数値でdouble型に変換したいのですが、
良い方法はないでしょうか?

538 名前:デフォルトの名無しさん :03/07/31 09:24
>>536
そういうときは、まずはキーワード羅列して検索

ttp://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=%83A%83C%83R%83%93+%83n%83%93%83h%83%8b+%83%8a%83%5c%81%5b%83X

539 名前:デフォルトの名無しさん :03/07/31 09:31
>>537
double型では、正確に2.5584を表すことは原理的にできないのです。
                         ~~~~~~~

540 名前:デフォルトの名無しさん :03/07/31 09:49
>>537
計算するときに小数点第5位以下を四捨五入すると貸して自分で工夫するしかねーよ。
小数を正確に表すことは出来ん。あきらめな。

541 名前:デフォルトの名無しさん :03/07/31 09:50
>537
doubleでは不可能。
誤差が嫌なら小数部と整数部に分けてintに格納とか。
演算出来ないけど。

542 名前:531 :03/07/31 13:35
>>539-541
そうですか。わかりました。
どうもありがとうございました。

543 名前:デフォルトの名無しさん :03/07/31 14:25
ピクチャボックス、またはエディットボックス上に
bold表示で文字を表示させたいんですけど
どういう関数を使えばいいんでしょうか

544 名前:デフォルトの名無しさん :03/07/31 14:31
エディトボックスについては、SetFontすればよろし。

545 名前:デフォルトの名無しさん :03/07/31 15:25
>>538
しました。そこも見たとおもいます。
アプリケーションクラスでロードアイコンすると、
Debug Assertion Failed!が出て、ビルド自体できないんすよね。
ちなみに出てるファイルはafxwin.inlのline26です。コードは
HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
でappクラスのコンストラクタに入れてます

って書いて、まさかと思って違う関数に入れたら通ったヽ(´∀`)/

546 名前:デフォルトの名無しさん :03/07/31 15:52
Appクラスのコンストラクタってあんた・・・

547 名前:デフォルトの名無しさん :03/07/31 16:18
いや、とりあえずどこでもいいからつっこんでコンパイラ通したかったんすよ笑
てかCImageListのadd関数にハンドル渡すとまたDebug Assertion Failed!が
でるうううう!また俺馬鹿なことやってんだろうなぁ。。。泣

548 名前:デフォルトの名無しさん :03/07/31 16:32
人間は生まれながらにして自由だが一方で鉄の鎖に繋がれている。
ルソーの社会契約論にそうある。
人間が家畜化してるらしいよ。

549 名前:デフォルトの名無しさん :03/07/31 16:59
ままままじでわからんです!
appのInitInstanceの最後に

HICON hIcon = NULL;
hIcon = LoadIcon(IDR_MAINFRAME);
if (hIcon == NULL)AfxMessageBox (_T("アイコンがロードできません"));
data.Treeimage.Add(hIcon);

TreeimageはCImageListです。この状態でリビルドしてもエラーでないんすけど
ブレークポイントで調べると四行目のAdd関数の時にDebug Assertion Failed!
がでます。なんか悪い事してる・・・?

550 名前:デフォルトの名無しさん :03/07/31 17:40
>>549
せっかくアサーションが発生しているなら、
CImageListのソースを見てみろよ。

551 名前:デフォルトの名無しさん :03/07/31 18:05
>>550
エラーのとこに出てるフォルダ名vs70buildsで検索かけたけどでない。
インクルードフォルダもみたんですけど・・・。
ソースどこにあるんすか??
ソース見ろってことは俺悪い事してるのか

552 名前:デフォルトの名無しさん :03/07/31 18:10
>>551
インストール時にMFCのソースも入れましたか?

553 名前:デフォルトの名無しさん :03/07/31 18:22
あった!!!!けど、意味不明・・・。
BOOL Arrange(UINT nCode);
でエラーなんですけど、うぅ〜

554 名前:デフォルトの名無しさん :03/07/31 18:24
{ ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
こっちでした。あ”ぁ〜・・・・・・・

555 名前:デフォルトの名無しさん :03/07/31 18:25
>>553
それってCListCtrlじゃないの?

556 名前:デフォルトの名無しさん :03/07/31 18:26
>>554
Create()してないでしょ。予想通りだけど。

557 名前:デフォルトの名無しさん :03/07/31 18:35
笑っちゃうくらい凄いっすね。。。
まじ尊敬しちゃう・・・。ありがとうございました!!

558 名前:デフォルトの名無しさん :03/07/31 20:05
>556
>>appのInitInstanceの最後に
だからね。Create()が通ってるわけもない。

559 名前:デフォルトの名無しさん :03/07/31 20:17
え、普通にCreateしたらできましたよ。
てか、今度はプログラム自体のアイコンが変わっちまいました・・・。
もう一時間格闘したよ・・・

560 名前:デフォルトの名無しさん :03/07/31 22:16
すいません。メモリ確保について質問です。

int x = 160;
int y = 30000
int *image = (int *)malloc( sizeof(int) * x * y );

for(i = 0 ; i < x * y; i ++)
image[i] = 0;

としたのです。このとき、i = 0でなぜかエラーになってしまいます。
デバッグするとimage[0]にメモリが確保されていないように思います。

これはどういう対処をすればいいのでしょうか?

561 名前:デフォルトの名無しさん :03/07/31 22:21
>>560
callocを調べてみると幸せになれるかも。

562 名前:デフォルトの名無しさん :03/07/31 22:44

覗いたが価値!ウキウキしますよ♪

http://angely.h.fc2.com/page004.html

563 名前:デフォルトの名無しさん :03/08/01 00:01
>>558
意味わかんねー

564 名前:デフォルトの名無しさん :03/08/01 00:19
最小化をするとタスクバーにアイコン化されるようにする
コードを教えて下さい

565 名前:_ :03/08/01 00:19
http://homepage.mac.com/hiroyuki44/hankaku09.html

566 名前:559 :03/08/01 00:41
たのむ・・・。もう・・・つかれた・・・。お、おしえてくんなまし

567 名前:名無し@沢村 :03/08/01 00:47
>>564
WS_EX_APPWINDOW

568 名前:デフォルトの名無しさん :03/08/01 01:04
プログラムが分かる先輩が辞めてしまいいきなりC言語を見てくれって言われたんで
すけど全く分かりません!

LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
byrhkprt.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exeの実行エラー

とエラーが発生するのですが何が原因なのでしょうか?
過去レスで
プロジェクトー設定-リンク で設定とあったのですがそのプロジェクトが見当たりま
せん。
使っているのはc++4.0です。
バージョンが古いのでしょうか?
教えてください。


569 名前:デフォルトの名無しさん :03/08/01 10:41
AdjustWindowRectで、メニューバーが複数行になる場合でも1行分のサイズしか返さないんですが
正しい値を得る方法はありませんか。
というかこれできないとこの関数の存在意義ないじゃないですか!おかしいですよ!


570 名前:559 :03/08/01 12:35
アイコンのIDをIDRにしてた・・・。ごめん俺・・・俺・・・逝ってくるわ・・・

571 名前:デフォルトの名無しさん :03/08/01 17:33
激しく厨な質問で申し訳ないのですが、
Platform SDK でHeader: 〜〜.idl
と書かれているものはどのようにして呼び出せばいいのでしょうか?
どうやら、COMみたいなのですが、Prog id もCLSIDもわからず…


572 名前:571 :03/08/01 20:08
詳しく言うとIStaticPortMappingインターフェイスを取得したいんですが…

573 名前:デフォルトの名無しさん :03/08/01 22:37
idl自体はmidlでコンパイルすればいいが、
PlatformSDKなら、コンパイル済みな、同名.hが付属しているはず。

574 名前:デフォルトの名無しさん :03/08/01 23:13
OfficeXPとかSleipnirみたいに、ツールバーとかメニューを
かっこよくするにはどうすれば??

575 名前:571 :03/08/01 23:13
NATUPnP.hだけでなくNATUPnP.idlすらありませんでした(汗

576 名前:デフォルトの名無しさん :03/08/01 23:24
どこを探した?

577 名前:571 :03/08/01 23:31
HDの中すべて探したんだけど(検索した)
SDKを落としなおすしか…

578 名前:デフォルトの名無しさん :03/08/01 23:37
ふーむ。

C:\Microsoft SDK\Include のディレクトリ

2001/05/30 18:20 67,477 natupnp.h
2001/06/03 22:49 10,086 natupnp.idl

579 名前:571 :03/08/02 00:09
そもそもPlathome SDKがはいってなかった予感
インスコ中でし

580 名前:デフォルトの名無しさん :03/08/02 01:20
>>574
自作。

まあ、冗談はともかくとして、Sleipnirはこれ。
http://www.bcgsoft.com/

フリーでなんとかしたかったら、CodeGuruとかCodeProjectとかviksoe.dk
あたりから拾ってくるとか。

581 名前:山崎 渉 :03/08/02 02:06
(^^)

582 名前:デフォルトの名無しさん :03/08/02 06:20
>>560
iはちゃんと定義されているのか?

583 名前:デフォルトの名無しさん :03/08/02 07:09
VS.NETのMFCで拡張子を追加したくて、ファイルの種類エディタを開きたいんですが
表示メニューにエディタがなくてできないんですがどうすればいい??

584 名前:デフォルトの名無しさん :03/08/02 11:33
VS.NETのWindows Installer作成機能で、
インストールの最後に「Windowsを再起動しますか(Y/N)」
というダイアログを出して再起動するようなものを作りたいんですが、
標準の機能だけでは無理なんでしょうか。

カスタム動作用のプログラムを作る必要がありますか。
でもその再起動用プログラムまでインストールする必要がありそう
なのが気になります。


585 名前:_ :03/08/02 11:38
http://homepage.mac.com/hiroyuki44/

586 名前:無料動画直リン :03/08/02 11:38
http://homepage.mac.com/miku24/

587 名前:デフォルトの名無しさん :03/08/02 11:42
インストールが必要な再起動プログラムってどんなだよw

588 名前:デフォルトの名無しさん :03/08/02 14:22
>>587
おまえ、メジャーリーグ級の馬鹿だな。
カスタム動作用のdllもインストーラに含めるって意味に決まってるだろ。

589 名前:デフォルトの名無しさん :03/08/02 15:30
猫でもわかるプログラミングのSDK編
第6章 簡単なメニューのところでお聞きしたいことがあるのですが、

Visual C++ .NET だとリソースエディタを使ってメニューを作成すればいい
というのは分かったので、実際にメニューを作ったのですが、
メニューバーそのもののIDの設定の仕方が分かりません。
メニューバー上で右クリックしても設定できないようですし・・・。

それと、IDが設定できれば
myProg.lpszMenuName = "メニューバーそのもののID";
とすれば良いと認識しているのですが、間違っているでしょうか?

590 名前:583 :03/08/02 15:33
めんどいから素直にMFC組みなおすわ

591 名前:デフォルトの名無しさん :03/08/02 15:52
>>589
Resource View内の項目を右クリープロパティ

592 名前:デフォルトの名無しさん :03/08/02 19:57
>>591
Menuが空じゃないと設定できなくない??

593 名前:デフォルトの名無しさん :03/08/02 22:35
>>584
この順序でやってみよう。
(1)本当にOSの再起動が必要かどうか見直す。
アプリの作りを変えられないだろうか。
(2)InstallShieldかなにかを買う予算がないか交渉してみる。
(3)あきらめられないかどうか検討する。

(4)もしも、どーーーーしてもVS.NETでやらなくてはならいならば…
まずWindows Installer SDK(Platform SDKの一部)のドキュメントを熟読する。
orcaとmsi編集ツールを駆使するのだ!


594 名前:593 :03/08/02 22:39
>593に追加。
(4)は結局はmsiのプロパティをちょこっと変更すればいいだけなんだけど。
VisualStudioのビルドに組み込むのが大変だし管理しづらくなるので
全然お勧めしない。

595 名前:583 :03/08/03 13:31
つりーで苦戦してる。MFCでエクスプローラースタイルでつくって
GetTreeCtrl()でアイテム追加してるんだけど、
ttp://aiton21.tripod.co.jp/a.JPG
みたいになって、TVI_ROOT指定でもこれの上にアイテムが追加できない。
このもう一個上にアイテム追加するにはどうすれば?

596 名前:595 :03/08/03 14:33
上ってのは階層の話です。。。

597 名前:デフォルトの名無しさん :03/08/03 14:45
>>595
これは全部ルートになってる
先にルート作って、そのときに返ってくるHTREEITEMを使って子を作る

598 名前:595 :03/08/03 15:01
TVS_LINESATROOT指定してたあああああああ!!
597さんまじすいません。。。
つくづく自分はばかだなぁと・・・・

599 名前:デフォルトの名無しさん :03/08/03 18:42
CString iconname;
Treename = "icon";
HICON iconname;
間接操作のレベルが異なるって出るんだけど、
どうすればCStringの文字列でHICONを作れる??

600 名前:デフォルトの名無しさん :03/08/03 18:42
あれ。。。
CString iconname;
iconname = "icon";
HICON iconname;
だよ

601 名前:デフォルトの名無しさん :03/08/03 18:50
きのせいだよ

602 名前:デフォルトの名無しさん :03/08/03 19:17
もうめちゃくちゃだな

603 名前:584 :03/08/03 22:29
>>593
解説ありがとうございます。
(1)は仕組み的にだめだったので、いまは(3)でやっています。
#やっているというかなにもしていないというかw

VS.NETのインストーラ作成機能はしょぼいんですね。
SDKのドキュメントにはいろいろ書いてあるっぽいのに
なぜできないんだろうと思っていました。

(4)はおすすめでないとのことなので、(3)を検討してみようと思います。
しかし8万か22万ですか...。
とはいえ、SDKのドキュメントを理解するのは大変そうですし。


604 名前:デフォルトの名無しさん :03/08/04 18:26
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=81
に貼ってあるリングバッファのソースなのですが、
何処が悪くてコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。

605 名前:デフォルトの名無しさん :03/08/04 18:49
>>604に書いてある質問なのですが、
どういうエラーが出てコンパイルが通らないのか皆目検討がつきません。
どなたかご教授お願いします。

606 名前:デフォルトの名無しさん :03/08/05 08:15
>>605
コンパイルとおったのですか?
下のはVCが吐いたエラーログです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/999294620_82/CRINGBUFF.plg

ちなみにコードは書くだけかいてあるんですが、何で見っけてくれないのでしょう??
環境はVC6sp5です。どなたかご存知ありませんか??

607 名前:デフォルトの名無しさん :03/08/05 11:28
>>606
簡単に言うと、おまいが test.cpp から呼び出した

int CRingBuff::Out
bool CRingBuff::In
CRingBuff::CRingBuff

は実体がねぇぞってコンパイラ様がお怒りに
なってるってこった。


608 名前:604&606 :03/08/05 19:07
書いてあるのだけど、何で見つけてくれないんだろ・・・。
うーん。
もうちょっと考えてみます。
#今見て気づいたけど、エラーログとIDEのエラー表示が若干違うな・・・。

>605&607
レスThx!

609 名前:デフォルトの名無しさん :03/08/07 00:49
もまいら教えてくさい!!
VS6.0なのですが、上書きのときのエディタの
キャレットが通常のときと一緒なのですがVS.NETの
ように上書きのとき幅広にしてわかるようにできないものでしょうか?

610 名前:デフォルトの名無しさん :03/08/07 01:52
DLLプロジェクトからLIBファイルを作成するにはどう
すればいいのでしょうか?


611 名前:デフォルトの名無しさん :03/08/07 03:48
Cを知らないとC++を習得するのは無理ですか?

612 名前:デフォルトの名無しさん :03/08/07 03:52
>>611
んなこたぁない。

613 名前:_ :03/08/07 04:01
http://homepage.mac.com/hiroyuki45

614 名前:デフォルトの名無しさん :03/08/07 10:40
>>611
C++はCの拡張規格であるから、
C++でCの基本的な書式や関数はだいたいそのまま使える。
だから書式がC++より単純なCの方からやり始めた方が、
プログラミングの勉強がしやすい。

いきなりクラスとかコンストラクタとか聞かれてもわけ分からんでしょ?


615 名前:デフォルトの名無しさん :03/08/07 10:59
いきなりポインタとか聞かれてもわけ分からんと思うが

616 名前:デフォルトの名無しさん :03/08/07 11:28
なんで初心者用のguiを主体にしたC++のプログラム勉強のページとか本とかないんですか?(あってもちょっとしか載ってない)
魔法の文いっぱいでも良いから、誰か作ってよ!
exeファイルにならないとおもしろくないよぉ!

617 名前:デフォルトの名無しさん :03/08/07 11:46
>>616
面倒でも最初はコンソールで
しこしこやったほうがいいだろうねぇ

どうしてもやりたいなら簡単なダイアログベースで
やればいいと思われ。

618 名前:デフォルトの名無しさん :03/08/07 11:52
そこでBCBなんですっ!!
GUI主体のC++だから初心者でも安心
MFCと同じ、なんて考えてる人は一度触ってごらんよ
世界が変わるよ

619 名前:デフォルトの名無しさん :03/08/07 11:58
>>616
そりゃ、VC++ は基本的に“GUI を主体にしていない”からですよ。

620 名前:デフォルトの名無しさん :03/08/07 12:09
ウインドウズ同士の(移動、サイズ変更時の)当たり判定って簡単にやれる方法(APIとかで・・・)ないっすか?
一応チャイルドウインドウ限定ということで・・・。

spy++見ても、あるウインドウがWM_SIZINGとか来てるときに他のウインドウに重なっても、
重なられたウインドウってメッセージとかきてないみたいなんですよね。

やはり古典的な方法でやるしかないのでしょうか?

621 名前:620 :03/08/07 12:10
すいません、win32apiのみで、MFCは使用してないっす。

622 名前:デフォルトの名無しさん :03/08/07 13:10
>>610
libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

>>620
SDK32:重なったウィンドウの表示されている部分を調べる
ttp://support.microsoft.com/default.aspx?scid=kb;ja;75236

「古典的な方法」って IntersectRect()を使うことかな?

623 名前:620 :03/08/07 13:44
>>622
ありがとうっす。なんとかなるかな?

古典的な方法・・・ゲームみたいにそれぞれ個別に自前でチェック・・・。

624 名前:620 :03/08/07 14:25
>>622
なんとかうまくいきそうです。ほんとありがとうございました。


625 名前:610 :03/08/07 16:12
>>622
>libファイルってDLLと同じ場所に勝手にできるんじゃなかたっけ?

すんません。クラスをエクスポートしていませんでした。
全く何もエクスポートしないとlibはできないんですね。


626 名前:デフォルトの名無しさん :03/08/07 16:40
初心者用HP参考にしてなんとかやってる者でつが、
DirectInputの初期化で手間どってます
// DirectInput の初期化
ShowWindow(SW_SHOW);
167res = DirectInputCreate(AfxGetInstanceHandle(), DIRECTINPUT_VERSION, &m_pDInput, NULL);
if( res != DI_OK )
{
170res = DirectInputCreate( AfxGetInstanceHandle(), 0x0300, &m_pDInput, NULL);
if( res != DI_OK )return 1;
}
res = m_pDInput->CreateDevice( GUID_SysKeyboard, &m_pDInputDev, NULL);
res = m_pDInputDev->SetDataFormat(&c_dfDIKeyboard);
res = m_pDInputDev->SetCooperativeLevel( AfxGetMainWnd()->m_hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);
m_pDInputDev->Acquire();
上をビルトすると
c:\Download\Lv2_Src\MainFrm.cpp(167): error C2065: 'DirectInputCreate' : 定義されていない識別子です。
c:\Download\Lv2_Src\MainFrm.cpp(167): error C2440: '=' : ''unknown-type'' から 'HRESULT' に変換できません。
c:\Download\Lv2_Src\MainFrm.cpp(170): error C2440: '=' : ''unknown-type'' から 'HRESULT' に変換できません。
こんなエラーが出てきます。解決策教えて下され

627 名前:デフォルトの名無しさん :03/08/07 20:26
>>626
鬱だ氏のう DirectX (Part 9)
http://pc2.2ch.net/test/read.cgi/tech/1054553472/


628 名前:悩み常駐 :03/08/07 20:43
winapiで、フォーカスのない時でも、キーイベントを監視したい、つまり、
常駐プロがラムを作成したい、誰か、教えてください。help help help


629 名前:デフォルトの名無しさん :03/08/07 21:04
>>628
> 常駐プロがラムを作成したい

ごめん、少しワロタ

630 名前:フック船長 :03/08/07 21:53
>>628
SetWindowsHookとかそのあたりを使おう。

631 名前:デフォルトの名無しさん :03/08/08 06:36
何気にMSDNライブラリを見るやつでwebみたらタブブラワザなんじゃ、、

632 名前:デフォルトの名無しさん :03/08/08 12:37

外のフォルダにあるアイコンファイルを、現在のプロジェクトに
追加したいのですが、リソースビューで
「リソースの追加」→「インポート」として、他フォルダのアイコンファイルを
選択して「開く」としても何も起こらないのです。

「リソースの追加」の「インポート」ってどの様にして使うのですか?
全く何も起こらないのですが


633 名前:デフォルトの名無しさん :03/08/08 13:28
>>632
パスに日本語を含むフォルダからはリソースがインポートできない。
VS.NETのバグと思われ。これVS.NET2003では直ってますか?

634 名前:デフォルトの名無しさん :03/08/08 14:04
>633
どうもありがとうございます。
しかしVC.NETのバグだったとは・・・。
そういうバグ情報ってどこから仕入れているのですか?


635 名前:デフォルトの名無しさん :03/08/09 06:21
SDIでリストコントロールとかツリーコントロールを作って、OnCrickのメッセージを
拾い選択されているアイテムの情報を得ようとしても、一回目のクリックは前回クリック
した位置のアイテム情報を拾ってしまうんですが、これを回避する手段はありますか?
UpdateDataをしてみたり2回GetSelectedItemをしてみても最初のクリックで拾うのは
無効なデータ(戻り値が0x00000000)になってしまいます

VC6SP5 Win98SEです。

636 名前:デフォルトの名無しさん :03/08/09 10:53
>>635
>一回目のクリックは前回クリック した位置のアイテム情報を
一回目にクリックしたのになんで「前回」があるの?

637 名前:デフォルトの名無しさん :03/08/09 17:01
if(前回のアイテム == NULL)
return;

みたいなのではダメなのか?


638 名前:デフォルトの名無しさん :03/08/09 17:05
と思ったらなんか勘違いしてた
636同様よく分からん


639 名前:635 :03/08/09 19:42
>一回目にクリックしたのになんで「前回」があるの?
分かりづらくてすみません。一回目では前回の情報はありませんから
必ず失敗するんです。

クリック位置 : GetSelectedItemの戻り値
  一個目  :  失敗
  二個目  :  一個目のハンドル
  三個目  :  二個目のハンドル
  四個目  :  三個目のハンドル
    ・           ・
    ・           ・
という状況なんです。ちなみに同じアイテムを二回クリックすれば
そのアイテムのハンドルは得られるんですが、そんなことする必要の
あるソフトなんて見たことないですし・・・

640 名前:デフォルトの名無しさん :03/08/09 19:57
あ、わかった。
OnLbuttonDown(){
i = GetSelectedItem()
DefWindowProc()
}
みたいなことになってるでしょ。

641 名前:635 :03/08/09 20:41
>>640
なってます。微妙に違いますが↓

OnClickTree(){
  m_hSelectedTreeItem=m_cTree.GetSelectedItem();
  TRACE(HTREEITEM[%08X]が選択されました\n",m_hSelectedTreeItem);

ってなってます。ほかにどうすればいいのか知らないので・・・

642 名前:デフォルトの名無しさん :03/08/09 20:58
HitTestとGetCursorPos使って判定してくらはい。
http://www.codeguru.com/forum/printthread.php?threadid=231232

643 名前:デフォルトの名無しさん :03/08/09 21:23
TVN_SELCHANGEDじゃあかんのか

644 名前:635 :03/08/09 21:33
>>642
参考にしてみたところ嘘みたいに動くようになりますた。ありがd

645 名前:635 :03/08/09 21:37
う゛っSELCHENGEDならGeteSelectedItemでも出来るのね・・・

646 名前:デフォルトの名無しさん :03/08/10 11:43
ソースを眺めてると標準ライブラリのstringでなくCStringを使ってる香具師が多いようですがCStringがstringより優れてる点ってどの辺りでしょうか

647 名前:デフォルトの名無しさん :03/08/10 12:08
MFCがインターフェースとしてCStringを使っているから。
CString::Formatがあるから。

648 名前:デフォルトの名無しさん :03/08/10 12:29
>>647
ありがと

649 名前:名無し@沢村 :03/08/10 13:35
>>646
マルチバイト文字に対応している。

650 名前:デフォルトの名無しさん :03/08/10 15:38
VC++でリリースビルドした実行ファイルにプロジェクトファイルが保存されていた
フォルダ名が残っていますが消せますか?

それともみなさんあまりそういうの気にせずに配布してます?

651 名前:デフォルトの名無しさん :03/08/10 15:43
>>646
参照カウントを使用していて代入やパラメータ渡しが高速だから

652 名前:デフォルトの名無しさん :03/08/10 15:57
>>650 VC6で?ホントにリリースビルドか?

653 名前:デフォルトの名無しさん :03/08/10 16:43
>>652
2003です
実行ファイルの場所がReleaseフォルダなので大丈夫じゃないかと思います

ちょっと訂正
pdbファイルがフルパスで記述されてます


654 名前:デフォルトの名無しさん :03/08/10 17:54
>>653
Releaseビルドの場合もデフォルトでは/PDBオプションが付くようだ。
はずしかたは/PDBオプションのヘルプで。

655 名前:デフォルトの名無しさん :03/08/10 18:17
>>654
構成プロパティ→リンカ→デバッグ→デバッグ情報の生成
をいいえにすることで解決しました
ありがとうございました

656 名前:646 :03/08/10 18:45
>>649>>651
CStringも結構便利なのね。

657 名前:デフォルトの名無しさん :03/08/10 21:22
>MFCがインターフェースとしてCStringを使っているから。
これがでかいんじゃないかな。
wstring使っててもそれだけじゃすまないし。

658 名前:デフォルトの名無しさん :03/08/10 21:30
>>655
これってプロジェクト毎に設定するしか方法ないのかな?
すべてのプロジェクトでReleaseビルドはデバッグ情報の生成を切る
オプションってないの?

659 名前:デフォルトの名無しさん :03/08/11 03:39
シンボルファイルってどう使うんですか?
DirectX9.0bのシンボルとかDLしたんですが、使い道がサパーリ(;´Д`)

660 名前:デフォルトの名無しさん :03/08/11 09:32
下記のようなメッセージが出るのですが原因がわかず困っています。
どなたか分かる方はいらっしゃいますか?

Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).
例外処理 (初回) は RecTest.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。

661 名前:_ :03/08/11 09:44
http://homepage.mac.com/hiroyuki45/hankaku05.html

662 名前:恵比寿帝冥 :03/08/11 12:59
ここ以外に良い掲示板があったら教えてください。

663 名前:デフォルトの名無しさん :03/08/11 13:23
Visual C++.netのいい参考書orサイトってありますか?

664 名前:デフォルトの名無しさん :03/08/11 13:26
>>662
マルチ

665 名前:デフォルトの名無しさん :03/08/11 17:39
タスクトレイにアイコンを表示してメニューを表示するところまではできたんですが
そのメニューの項目をクリックしないと消えてくれません。

えっと、やっぱ他の別のウィンドウとかをクリックして
メニューがアクティブでなくなったら消えてほしいんですが
いつまでもしつこく出ています。

どーすれば、消えてくれるんでしょうか?

666 名前:デフォルトの名無しさん :03/08/11 18:46
>>665
SetForegroundWindow(hWnd);
TrackPopupMenu(...);
PostMessage(hWnd, WM_NULL, 0, 0);

ってな話だったと思う。

ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/menus/menureference/menufunctions/trackpopupmenu.asp

これのRemarksとShow Exampleを見るべし。


667 名前:デフォルトの名無しさん :03/08/11 22:50
XMLの出力をしたいんですが、普通にファイル出力で出力してくしか分からないんですが、
何かいい方法ありますか?

668 名前:デフォルトの名無しさん :03/08/11 23:42
とりあえず、その分で本当に人に意味が伝わるか
自分で確認してからもう一度書いておくれやす。

何に対してどのようにしたいからXMLを出力したい?

669 名前:デフォルトの名無しさん :03/08/11 23:48
テキストエディタをつくりたいのですがエディットボックスコントロールでは
最大32kbまでの文字列しかあつかえないそうですが大きなサイズの文章編集
が出来るものをつくるにはどうすればいいのですか

670 名前:デフォルトの名無しさん :03/08/11 23:54
>>669
RichEditBoxだったかな・・・そんなのがあるよ

671 名前:デフォルトの名無しさん :03/08/12 00:06
>670
ありがとうございます

助かります

672 名前:デフォルトの名無しさん :03/08/12 01:16
>テキストエディタをつくりたい

もし、秀丸とかその系統のものを目指しているなら
自作が早道。RichEditCtrl はとかく使いにくい。


673 名前:665 :03/08/12 11:08
>>666
SetForegroundWindow(hWnd);
こいつがなかったせいみたいでした。
つけたらOKでした。
ありがとうございました。

674 名前:デフォルトの名無しさん :03/08/12 11:17
VC++からDBの操作についてなのですが、
CDaoRecordsetの派生クラスをつくりクラスウィザードで
複数のテーブルを選択して派生クラスのメンバ変数として
選択した複数のテーブルがメンバ変数に登録されたのですが、
1つのテーブルだけを処理したいのですが、可能なのでしょうか?
たとえば下記のようなコードを実行すると意味のわからない
レコード数が戻ってきてしまいます。
クラスを作る段階で選択しているテーブルが1つだけなら
問題なくレコード数なのどは参照できるのですが・・・

----ここから----

CRecSet MyRecSet;
MyRecSet.Open();
MyRecSet.MoveLast();
long RC = MyRecSet.GetRecordCount(); //ここに意味不明な数値
MyRecSet.Close();


675 名前:デフォルトの名無しさん :03/08/12 11:59
VC.NETなんですけどダイアログにコントロールを追加するには
どうすればいいんでしょうか?

676 名前:恵比寿帝冥 :03/08/12 12:08
662の結果です。

----------------------------------------
VC超初心者会議室
http://www.mtakahashi.com/bbs.htm
----------------------------------------
VC ラウンジ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi
----------------------------------------
Visual C++ Q & A 掲示板
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi
----------------------------------------
2チャンネル
http://www.2ch.net/
----------------------------------------
VC++に関する質問・回答BBS
http://www.net24.ne.jp/~kenji/bbs/wforum.cgi
----------------------------------------
プログラミング質問掲示板
http://cgi2.html.ne.jp/~piro/bbs/wforum.cgi?page=0&mode
----------------------------------------
C言語関係掲示板
http://www2.realint.com/cgi-bin/tbbs.cgi?pointc

677 名前:デフォルトの名無しさん :03/08/12 13:45
独自のライブラリを作ってそれに名前空間名Commonを
つけて、それをつかうために

using namespace Common;

と書いたのですが、

`global namespace'' のメンバではありません。

と叱られてコンパイルできません。
Common::function();
と完全修飾すれば通るのですが...

なにか原因は考えられるでしょうか?


678 名前:677 :03/08/12 15:50
↑C++相談室で教えてもらいますた。
ありがとうございますた。。。

679 名前:デフォルトの名無しさん :03/08/12 17:34
新規作成(Win32プロジェクト)のコードをそのままビルドしようとすると

Debugだと
project1 error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。
project1 error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。
project1 error LNK2019: 未解決の外部シンボル @_RTC_CheckStackVars@8 が関数 _WinMain@16 で参照されました。
project1 error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 _WinMain@16 で参照されました。
project1 fatal error LNK1120: 外部参照 4 が未解決です。

Releaseだと
project1 error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 fatal error LNK1120: 外部参照 2 が未解決です。

というエラーが出るのですが何が原因でしょうか?


環境/Win2000/VC++.NET

680 名前:デフォルトの名無しさん :03/08/12 21:48
VC++.NETなんですけど、
WM_CLOSEメッセージが来た時に、MessageBoxを出して終了するかしないかを決定するのを組んだのですが、
メッセージボックスが表示されません。Altキーを押すと出てくるんですが。。
何が原因なんでしょうか?
以下がその部分です。よろしくお願い致します。

case WM_CLOSE:
int nResult;
nResult = MessageBox(hWnd, "本当に終了してもよろしいですか?", "確認",
MB_YESNO | MB_ICONQUESTION | MB_TOPMOST | MB_SETFOREGROUND);
if(nResult == IDYES) DestroyWindow(hWnd);
break;

681 名前:デフォルトの名無しさん :03/08/13 01:20
つまらないことですがお願いいたします。
VC++のエディタでクラスのコンストラクタが自動メンバ表示
されないのですが(デストラクタはされる)何か理由が
あるのでしょうか?

682 名前:デフォルトの名無しさん :03/08/13 01:38
直接呼べないコンストラクタを補完して何かうれしいのかね?

683 名前:681 :03/08/13 01:48
>>682
でもデストラクタは呼べるのですが。

684 名前:デフォルトの名無しさん :03/08/13 01:55
たしかに、デストラクタは明示的に実行できるね。
でも、それは反論にはなっていないよ。

685 名前:681 :03/08/13 02:18
もう一回コンストラクタ、デストラクタから
勉強しなおしてきます。。。


686 名前:デフォルトの名無しさん :03/08/13 12:15
デストラクタは明示的に呼べるが、
コンストラクタは明示的に呼べない。
従って、コンストラクタを補完する必要はない。

687 名前:デフォルトの名無しさん :03/08/13 15:03
VC++6(sp5)でstlport4.5.3を使い始めたんですが、
#include <iostream>
#include <deque>
using namespace std;

上記のように宣言すると、iostreamでライブラリの競合エラーが出て使えません。
これを回避する方法ご存知でしたら教えていただけないでしょうか。

688 名前:デフォルトの名無しさん :03/08/13 21:55
>>687
確かstlportの優先順位をageれば良かった気が…

689 名前:デフォルトの名無しさん :03/08/14 06:41
C++って、Cより++(チョメチョメ)な分エロいんですか?
どんなプレイのことをC++(シーチョメチョメ)って呼ぶんですか?
それと昔、棒ランド(某ランド?)っていうヤバい会社もC++してたんですか?
MSのはVisual的にスゴいのか・・・(;´Д`)ハァハァ

690 名前:687 :03/08/14 10:57
>>688
解決しました。ありがとうございました。


691 名前:デフォルトの名無しさん :03/08/14 11:07
C言語なら俺に聞け!スレから来たんですが、VCでのDLLの
作り方がよく わからず、困っております。どなたかわかりやすく
教えてください。 それか、ソースを晒すのでDLLにしてください。
おねがいします。(サイトみて手順通りやってみたけどできない
泣)

692 名前:デフォルトの名無しさん :03/08/14 11:14
ソースだけ晒しても無駄ですんで、
どうできなかったのか具体的に説明してください。


693 名前:691 :03/08/14 11:25
http://www.angel.ne.jp/~mike/vb_dll/index.html
このサイトの通りやったんですけど、なんか、関数名(?)みたいな
所でエラーが出てしまい、また、defファイルの加え方もよくわかり
ません。教えてください。(Cはある程度使えますが、VCは本当に
初心者です)

694 名前:デフォルトの名無しさん :03/08/14 12:05
>>693
http://www.athomejp.com/goldfish/

http://www.athomejp.com/goldfish/mfc/dll/csample.html
辺りを参照してみてください。
>>693のサイトより単純明快だと思いますんで。

695 名前:デフォルトの名無しさん :03/08/14 15:05
VC++ 6.0でクラスライブラリを作って、そのヘッダやライブラリファイル
が入っているフォルダをオプションのディレクトリのところに登録したんだが、
いざそのクラスのヘッダファイルをインクルードしてもビルドはちゃんと
できるのにメンバがMFCやWin32の関数みたいにエディタのIntellisence機能で出てきて
くれないんだけど、どうしたらいいんでつか?
やっぱりその都度、プロジェクトにソースやヘッダファイルを追加しないとダメなんですか?

696 名前:デフォルトの名無しさん :03/08/14 15:47
ヘッダーだけプロジェクトに参加させればえぇで。

697 名前:デフォルトの名無しさん :03/08/14 17:02
昔にCでDOSで動くやつを書いていたんですけど、さすがにGUIアプリケーション作りたくなってVCを使ってみたいと思いました。この場合、開発過程の習得は簡単なのでしょうか?
不安なのはCとC++で文法がどれぐらい違うのかということです。

698 名前:デフォルトの名無しさん :03/08/14 17:19
Console ApplicationをMFCサポートで作成しています。

プログラム実行中に、右上の×ボタンを押下すると強制終了できますが、
強制終了できないようにすることは可能でしょうか?


699 名前:デフォルトの名無しさん :03/08/14 17:32
>>697
CとC++の違いっつうと、クラスとオーバーロードかね。(ほかにもあるけど)
もっともそれよりもWindowsアプリの場合は結構めんどくさい事しなきゃならんから
まずC++を勉強するのか先か?
猫でも分かるプログラミングでも読んでみ?
ぐぐればすぐ出る。

700 名前:デフォルトの名無しさん :03/08/14 18:06
>>698
永遠に止まらないプログラムを書きたいのですね?

701 名前:デフォルトの名無しさん :03/08/14 18:09
>>700
途中で窓を閉めてしまうとエラーがでてしまいます。
なので、処理終了後には自動で窓が閉めれるといいのですが・・・

702 名前:デフォルトの名無しさん :03/08/14 18:47
ソースを選択してctrlかシフトを押しとどれかのキーを押すと自動にソースにあった
インデントが入る機能があったと思うんだが、どうやるんだっけ?

703 名前:695 :03/08/14 18:52
>>696
レスさんくすです。

Win32API関数とかが、何もしなくてもIntellisenceが起動するのはVC++内部の仕様なんですかね?

704 名前:デフォルトの名無しさん :03/08/14 18:56
バグです

705 名前:デフォルトの名無しさん :03/08/14 19:21
>>702
Ctrl+K→Ctrl+F (VC++.NET)
Alt+F8 (VC6)

706 名前:デフォルトの名無しさん :03/08/14 20:02
>>697
違いというよりも追加要素といった方がいいな。
とりあえず、クラスの構造や機能を理解して、
さらにクラスの継承、コンストラクタ・デストラクタ、
オーバーロード、オーバーライド、エラー処理を
最低限抑えておくとVC++に移行しやすい。
テンプレートもやっておくと便利だが、
やらなくてもとりあえずVC++は使えるので、
VC++を使いながら勉強しても特に問題ない。

漏れはC→Java→VC++と変則型だったので、
VC++やりながらC++も勉強した。
まぁ、JavaとC++は内部処理的にはともかく書式は似ているので、
それほど苦にはならなかったけど。

707 名前:デフォルトの名無しさん :03/08/14 20:03
>>705
あんがと
Altだったか。

708 名前:デフォルトの名無しさん :03/08/15 01:42
Visual C++で

mylib.h
// mylib_tの説明
typedef struct mylib_t
{
int value; // valueの説明
} mylib_t;

// mylib_initの説明
void mylib_init(mylib_t *self);

mylib.c
#include "mylib.h"
#include <memory.h>

void mylib_init(mylib_t *self)
{
memset(self, 0, sizeof(*self));
}

というソースをビルドしてmylib.libを作ります。

次に別プロジェクトのapp.cからmylib.hをインクルードして
関数・構造体をインテリセンスで列挙したところ
コメント部分がチップヘルプで表示されません。
mylib.h, mylib.cをapp.cと同じプロジェクトに移動すると表示されます。
ソースを提供しないでヘッダとライブラリファイルだけでリリースして
なおかつインテリセンスのチップヘルプでのコメント表示を有効にするには
どうすればいいのでしょうか。mylib.bscをlibと同じディレクトリに生成しても表示されませんでした。

709 名前:デフォルトの名無しさん :03/08/15 03:33
>>708よ。VisualC++スレで
>Visual C++で
は、ないだろ。

710 名前:デフォルトの名無しさん :03/08/15 13:22
>>708
不可能。

711 名前:デフォルトの名無しさん :03/08/15 14:03
質問お願いいたします。
TRACE0マクロでデバッグウィンドウに文字を出力する方法を
最近覚えたのですが、例えばintとかに入っている
数値を出力する場合も文字に変換しないといけないのでしょうか?
(そのまま出力すると数値でなく文字化けみたいになるのですが)

712 名前:デフォルトの名無しさん :03/08/15 14:06
// TRACE の例
int i = 1;
char sz[] = "one";
TRACE( "Integer = %d, String = %s\n", i, sz );


713 名前:711 :03/08/15 14:12
>>712
できました!
サンクスコです!!

714 名前:691 :03/08/15 14:49
どうにか作ってみたんですが、VBから呼び出せないようです。
書き方自体が根本的に間違っているかもしれないので、
どなたか見てやってください。
ちなみに、外から呼び出したいのはdoublemulapi関数だけで、他の関数は
DLLの中でdoublemulapi関数から呼ばれるだけの関数です。
http://www12.ocn.ne.jp/~mygrid/DOUBLEMUL.TXT

715 名前:山崎 渉 :03/08/15 15:10
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

716 名前:デフォルトの名無しさん :03/08/15 15:23
extern "C"が要らなかったっけ?

717 名前:691 :03/08/15 15:56
>>716
すいません。本当に手探りなので、どこに付けるのか
教えていただけるとうれしいです。
(ちなみに、return a+b;だけの関数を備えたDLLの場合
は今の書き方で出来ました。関数1個だけの場合)


718 名前:デフォルトの名無しさん :03/08/15 17:07
ファイルを実行したら、DAMAGE: after normal block(#40)というのが出てきました。
これは何なんでしょうか?

719 名前:デフォルトの名無しさん :03/08/15 19:40
板違いの指摘を受け、パソコン初心者板から移動してきました。

クライアント領域にビットマップを表示したいのですが、
メモリデバイスコンテキストに割り当てたビットマップクラスオブジェクトは
表示終了後に必ず解放しなければなりませんか?
例えば以下のようなコードにおいて、最後の::SelectObject呼び出しは必須ですか?
これを行わないで関数が終了した場合、
pMDCはスコープを失ってDeleteされた結果として
何らかの深刻なエラーを引き起こしますか?
もし起こすとしたら、なぜ起こしますか?

{
 CBitmap Bitmap,*pDefBitmap;
 CDC *pMDC;
 pMDC = new CDC;
 // この辺りで::LoadBitmap
 pMDC->CreateCompatibleDC(pDC);
 pDefBitmap = pMDC->SelectObject(&Bitmap);
 // この辺りで::BitBlt
 pMDC->SelectObject(pDefBitmap); // ←ココ
}

CPenクラスやCBrushクラスも同様に解放を行わないと実行時エラーが起きるようですが、
どうして起こるのか原理がサポーリです。;_;
高名な先輩プログラマの皆様、よろしくおねてぃ。

720 名前:デフォルトの名無しさん :03/08/15 20:26
というか解放して問題が出なければとりあえず解放しといた方が良いと思うんだが

721 名前:デフォルトの名無しさん :03/08/15 21:30
それいぜんに、そのコードでは、pMDCとかがリークしているわけだが。

722 名前:デフォルトの名無しさん :03/08/15 21:44
>>721
pMDCは関数の終了とともにスコープを失って
自動的にデリート(デストラクタ呼び出し)されませんか?

では↓

{
 CBitmap Bitmap,*pDefBitmap;
 CDC MDC;
 // この辺りで::LoadBitmap
 MDC.CreateCompatibleDC(pDC);
 pDefBitmap = MDC.SelectObject(&Bitmap);
 // この辺りで::BitBlt
 MDC.SelectObject(pDefBitmap); // ←ココ
}

MDCを静的に確保してみましたが、これならどうでしょう?

723 名前:デフォルトの名無しさん :03/08/15 21:57
>>722
(´-`).。oO(pDefBitmapってちゃんとオブジェクトを指してんのか?)

724 名前:デフォルトの名無しさん :03/08/15 22:21
>722
されない。断じてされない。スコープがはずれるのは、ポインタそれ自体で
あって、ポインタの指し示す先にあるオブジェクトではない。
struct test{ ~test(){printf("d");} };というクラスでもでっち上げて試してみたらどう?

さてSelectObjectだが。
・必須です。
・起こします。
・MSDNのDeleteObjectのRemarkには、"Do not delete a drawing object (pen or brush)
while it is still selected into a DC."とあります。そのようなことを前提にAPIが
設計されていないから、でしょう。失敗すれば、結果はリソースリークです。

725 名前:719=722 :03/08/15 22:35
>>724
>スコープがはずれるのは、ポインタそれ自体であって、
>ポインタの指し示す先にあるオブジェクトではない。

そうでした・・・。m(__)m
今再度調べてみたところ、
::SelectObjectは解放されたオブジェクト(今まで参照していたオブジェクト)を
デストラクタを呼び出してdeleteする機能があるので、
明示的には::DeleteObjectを呼ばなくていいみたいですね。
そういう意味でも、最後の::SelectObject呼び出しは必須だということで・・・
むぅ、動作が難解だ・・・。;_;

回答どもでした。また何かありましたらよろしくお願いいたします。m(__)m

726 名前:719=722 :03/08/15 22:37
>>723
 pDefBitmap = pMDC->SelectObject(&Bitmap);

これは正当なようです。
とりあえず、コンパイラは文句いってきません。(笑

727 名前:719=722 :03/08/15 22:50
>デストラクタを呼び出してdeleteする機能があるので、
>明示的には::DeleteObjectを呼ばなくていいみたいですね。

・・・と思ったら、やっぱりちゃんとdelete pMDC;ってやんないとダメみたいだわ。(笑

728 名前:デフォルトの名無しさん :03/08/16 00:19
VC6ので、ファイルをオープンする時に
const char* じゃなくて stringって使えますでしょうか?

#include <fstream>
...略...
string FNAME = "c:\test.txt";
ifstream file_in;
file_in.open(FNAME);

みたいにしたいのです。

729 名前:デフォルトの名無しさん :03/08/16 00:43
>>728
やってみろよ。

730 名前:デフォルトの名無しさん :03/08/16 02:40
新規作成(Win32プロジェクト)のコードをそのままビルドしようとすると

Debugだと
project1 error LNK2001: 外部シンボル "__RTC_InitBase" は未解決です。
project1 error LNK2001: 外部シンボル "__RTC_Shutdown" は未解決です。
project1 error LNK2019: 未解決の外部シンボル @_RTC_CheckStackVars@8 が関数 _WinMain@16 で参照されました。
project1 error LNK2019: 未解決の外部シンボル __RTC_CheckEsp が関数 _WinMain@16 で参照されました。
project1 fatal error LNK1120: 外部参照 4 が未解決です。

Releaseだと
project1 error LNK2019: 未解決の外部シンボル @__security_check_cookie@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 error LNK2019: 未解決の外部シンボル ___security_cookie が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
project1 fatal error LNK1120: 外部参照 2 が未解決です。

というエラーが出るのですが何が原因でしょうか?
また、"__RTC_InitBase"や"__RTC_Shutdown"などは何なのですか?
ぐぐってもダメでしたし、MSDNにも見つかりませんでした。

よろしくおねがいします。
(環境/Win2000/VC++.NET)


731 名前:デフォルトの名無しさん :03/08/16 03:08
>>730
ヘッダファイルに付属していたであろう
*.lib をプロジェクトにぶちこめ!

732 名前:728 :03/08/16 11:36
c_str使ったりいろいろ試したんですが無理でした。
素直にconst char* でやります。

733 名前:デフォルトの名無しさん :03/08/16 13:15
>>732
string.begin()


734 名前:デフォルトの名無しさん :03/08/16 13:16
あるいはMFCならCStringを使うといい


735 名前:691 :03/08/16 21:10
>>714
どうやら、戻り値がないとDLLはだめ?なのかIntで戻り値を返す
ようにしたら普通に呼び出せるようになりました。(書き方は変えました
が)この事は常識なのでしょうか?それとも、やはり私の書き方がおかし
いのでしょうか。まぁ、とりあえずできたのでよしとします。


736 名前:デフォルトの名無しさん :03/08/16 22:14

コーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。

http://money.2ch.net/test/read.cgi/haken/1057486349/287

腹立ちました。
みんなでやっつけにいこう。

737 名前:べんとらべんとらすぺーすぴーぽー :03/08/17 21:25
質問させてください。m(__)m
これはCPenオブジェクトの配列にそれぞれ別個のPen設定を保存して、
それを切り替えながら文字や線を描画する処理です。

void PenTest(CDC *pDC){
  const int iMaxPen = 5;
  CPen *myPen[iMaxPen],*pOldPen;
  pOldPen = (CPen*) pDC->SelectStockObject(BLACK_PEN);  // デフォルト設定を保持
  for (int i=0; i<iMaxPen; i++){
    myPen[i] = new CPen;
    // ::CreatePenでmyPen[]の各要素に別個のPen設定を保存する
  }
  // 適宜Penを切り替えながら描画する何らかの処理
  // pDCをデフォルト設定に復帰した後、myPen[]を削除
  pDC->SelectObject(pOldPen);
  for (i=0; i<iMaxPen; i++){
    myPen[i]->DeleteObject();
  }
  delete [] myPen;  // ← ココ
}

描画が終わった後、メモリ領域をdeleteしようとすると実行時エラーが起きます。
なぜなんでしょう?;_; ちなみに、
  for (i=0; i<iMaxPen; i++){
    myPen[i]->DeleteObject();
    delete myPen[i];  // ← ココ
  }
のように書くとエラーはおこりません・・・。
むぅ、どちらも配列を削除していることには違いないんだけど・・・。

738 名前:デフォルトの名無しさん :03/08/17 21:55
>むぅ、どちらも配列を削除していることには違いないんだけど・・・。

char *p[2]; p[0]=malloc(10); p[1]=malloc(10)
char *p=malloc(20);
の違いがわかるか?

739 名前:737 :03/08/17 22:12
>>738
むほっ。よく分かりません。;_;

最初の行は要素2のポインタ配列を用意して、
要素のそれぞれに10バイトのメモリ領域へのポインタを割り当てています。
これはdelete [] p;で削除します。

2番目の行は(配列ではない)ポインタに
20バイトのメモリ領域へのポインタを割り当てています。
これはdelete p;で削除します。

これと>>737とがどういう風に結びつくのでしょうか。_●□=

740 名前:デフォルトの名無しさん :03/08/17 22:12
VC++6.0ってXPにもいれられますか?

741 名前:デフォルトの名無しさん :03/08/17 22:24
>>739
> これはdelete [] p;で削除します。
だめ

742 名前:デフォルトの名無しさん :03/08/17 22:25
>739
1.char *p[2]; p[0]= new cahr [10]; p[1] =new char [10]
2.char *p[2]; p[0]= new char; p[1]=new char;
・1,2について解放の仕方をそれぞれ述べよ(10点)。

743 名前:737 :03/08/17 23:28
>>742
1番
{
  char *p[2];
  p[0]= new char [10]; p[1] =new char [10];
  for (int i = 0; i < 2; i++){
    delete [] p[i];
  }
}
2番
{
  char *p[2];
  p[0]= new char; p[1]=new char;
  delete [] p;
}

・・・くわっ!Σ( ̄□ ̄;
そうか、delete [] p; っていうのは、
ポインタが参照するメモリ領域が配列の時に使うのですね!
ポインタ自身が配列の時に使う構文じゃないってことですか。
2番は間違えですね。ひゃっひゃっひゃ・・・恥ずかP。(〃゚▽゚;A

ありがとうございました。m(__)m

744 名前:デフォルトの名無しさん :03/08/18 03:35
appidってどうやったらわかりますか?

745 名前:デフォルトの名無しさん :03/08/18 03:38
appid?

746 名前:デフォルトの名無しさん :03/08/18 04:07
>>740
http://www.microsoft.com/japan/msdn/vs_previous/vstudio/techinfo/toolos.htm

747 名前:744 :03/08/18 13:48
アプリケーションIDだと思うんですけど。プログラムIDと同じらしいですが

748 名前:デフォルトの名無しさん :03/08/18 14:15
とりあえず、appidが出てくるurlの例でも示せ

749 名前:デフォルトの名無しさん :03/08/18 17:45
ちょっと相談、っていうか教えて欲しい。

今開発中のアプリにテキストの表示機能が必要と言うことになった。
Notepad.exeを呼び出してもいいが、そのファイルを変更されてしまう可能性がある。
となると、アプリ中で表示しないといけないのだけどなにか手っ取り早い手はあるかな?

750 名前:デフォルトの名無しさん :03/08/18 17:52
MFCなら CEditView とかダイアログにテキストボックス作ってそれで表示するとか
Win9xなら64kの制限あるけど


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