[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/01 14:35 / Filesize : 252 KB / Number-of Response : 999
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part28



1 名前:誰も立てないから・・ [2007/11/30(金) 22:40:42 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html
myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5

735 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:21:26 ]
ちうか、733は「デバッグ」をどのようにやればいいのかが
そもそも明確に判ってないような気がする。

736 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:22:16 ]
プログラマ歴20年だけどデバッグ機能ってほとんど
使ったことない。

737 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:26:22 ]
733とは違うが自分もデバッグ方法やVSのデバッグ機能の使い方を知りたいな

よい書籍やサイトないですか?

738 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:27:37 ]
あんまり自慢にならんね、それは。

739 名前:738 mailto:sage [2008/02/03(日) 21:30:48 ]
>>738>>736 宛てな。

>>737
まずは、ヘルプの「デバッガの使用方法」に目を通せばいいんじゃね?

740 名前:733 mailto:sage [2008/02/03(日) 21:49:54 ]
>>734
ループ部分とかループ回数分確認し続ける、とかなりそうですね・・・
使いどころが難しそうだ

>>735
バグ取りくらいの認識なんで、エラーの行見て修正
論理的なところは紙に全部書きだして直してます



741 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:30:10 ]
>>740
ループを抜け出たいなら、ちょうど出た所にブレイクポイントをかけておいて
通常実行をすればいい

あと気をつけないといけないのは、DebugモードとReleaseモードの違いね
Releaseの場合は、普通はコードが最適化されるので、その都合上
デバッガで追いかけられない場合がある
その場合はDebugモードに戻して再実行すること

742 名前:733 [2008/02/03(日) 22:42:26 ]
>>741
なるほど、それなら便利そうです

まだそういった作業が必要なレベルのものを組んだことがないんで実感が沸かなかったのかな・・

ありがとうございました

743 名前:733 mailto:sage [2008/02/03(日) 22:43:15 ]
うわあげちゃったごめんなさいorz



744 名前:デフォルトの名無しさん [2008/02/03(日) 23:41:33 ]
visualc++2005express editionをインストールしているんですが、今visualc++2008express editionがでてるじゃないですか。
なので2005をアンインストールして、2008をいれたほうがいいのでしょうか?
それと2005と2008の違いを教えてください。

745 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:55:22 ]
VCEEについては、そんなに変更はなかったんじゃないかな。

746 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:24:04 ]
新しいものが好きなら2008
安心を得たいなら2005

747 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:34:32 ]
iostream系の日本語の処理が、2005はおかしかったって話だけど。

748 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 07:49:46 ]
locel

749 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 10:14:59 ]
>>736
自分の書いたものしかデバッグしないの?
20年前か、、CodeViewで衝撃受けたころかなー

750 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:14:18 ]
デバッグ使えない奴はバグの原因が自分のコードか他人のコードか確認できないから
バグを他人のせいにしやすい。

751 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 11:28:08 ]
printfならいっぱい入れるけど

752 名前:デフォルトの名無しさん [2008/02/04(月) 12:29:02 ]
誰かご存知だったら教えてください。
VS2005のVC++でWin32ベースのDLLを作成しました。
その後セットアッププロジェクトで
レジストリの編集を行うところで戸惑っております。
すでに存在する、複数行文字列値(REG_MULTI_SZ)の値に
ある文字列を追加したいのですがセットアッププロジェクト上には
複数行文字列の項目がみあたりません。
セットアッププロジェクトのレジストリ編集では
複数行文字列の値を操作できないのでしょうか?
いい解決方法などご存知の方、どうぞよろしくお願いします。

753 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:50:48 ]
ここ初心者スレですけど



754 名前:752 mailto:sage [2008/02/04(月) 14:01:06 ]
すみません、、、スレを改めます。
失礼しました。


755 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 14:11:55 ]
学ぼうとする姿勢がある限り人はずっと初心者だってばっちゃが言ってた

756 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 16:55:07 ]
REG_MULTI_SZで検索

757 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 17:50:43 ]
char buff[256];
for (int i=0; i<sizeof(buff); i++) {
  printf("%c", buff[i]);
}

をもっと速くなるようにチューニングしたいのですが
どのような方法がありますか?

758 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:00:12 ]
>>757
それは遅いのか?
本当に?
ちゃんと最適化しても問題になるほど遅いのか?


OK!
それなら、取り敢えずputchar(buff[i])ではどうだろうか。

759 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:01:06 ]
buff内にナル文字がないことが保証されているのなら、printf("%.256s", buff)でいいね。

760 名前:757 mailto:sage [2008/02/04(月) 18:27:20 ]
>>758
ありがとうございます。
とりあえずputcharにしました。
速くなった気はしないでもないです。

>>759
困ったことにナル文字があります。


761 名前:100 [2008/02/04(月) 18:31:14 ]
先日まで動いていたプログラムを実行したところ、
リソース(ダイアログ)が表示されなくなってしまいました。
原因が全く分かりません。
エラー、警告ともに0です。
実行できていたときから修正などは一切していません・・・何が原因でしょうか?
どなたかお分かりの方、お教えて頂けないでしょうか><


762 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:38:36 ]
>>760
斯くなる上は、fwrite(buff, sizeof(buff), 1, stdout)だ。
# 変わらんと思うけどねぇ。

763 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:40:54 ]
>>760
sizeof(buff)を変数に移して使った方が速いんじゃないかな



764 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:44:49 ]
>>763
sizeof(buff)は定数だから心配なし。

765 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:44:51 ]
>>761
それだけじゃエスパーじゃない限り返答不能です。
ダイアログ呼び出し前後のソースを公開してください

766 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:44:59 ]
質問です。最小化の動作って、指定した座標などに向かって動作させられますか?
可能ならどんな関数を使えばいいか教えて下さい。お願いします。

767 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:48:29 ]
>>764
そうなん?てっきり値が変わらなくても毎回サイズ計算するものだと思ってたよ

768 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:52:14 ]
>>766
簡単には出来ないと思うけど、自分でウィンドウサイズと位置を制御して
アニメーションさせれば似たような事ができると思うよ

769 名前:100 [2008/02/04(月) 18:53:56 ]
申し訳ございません。
ソースは下記の通りです。

int PASCAL WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Ret;

hPrevInstance = hPrevInstance;
lpCmdLine = lpCmdLine;
nCmdShow = nCmdShow;
// Create Dialog
Ret = DialogBox( hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DIO_Sample );
return Ret;
}

前回実行させて動作確認できたときから何も触っていない状態で、
今日実行させたらリソース画面が出てこなくなりました。
プログラムの問題なのでしょうか?

770 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:57:07 ]
>>767
計算するって言ったって、何を計算すると思ったのかね。
まさか、size_t foo = 4; は計算すると思わないだろ?
size_t foo = sizeof(int); は?
勿論、size_t foo = sizeof(buff); だって同じことだ。

771 名前:757 mailto:sage [2008/02/04(月) 19:00:30 ]
>>762
おぉ!これは速そうですね!


772 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:10:53 ]
>>768
そのアニメーションをさせる関数が分かりません;
SystemParametersInfoはアニメーションを指定の座標へ行わせるものではないんですよね?
なんて検索したら見つかるでしょう・・

773 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:32:34 ]
何がしたいのかいまいち分からないな。
既定の動作だと最小化するとタスクバーに入るけど
それをどうしたいの?
もしかしてタスクトレイに入れたいとか?



774 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:33:40 ]
>>772
定期的にSetWindowPosでも呼び出して座標とサイズを指定してやればいいんじゃないかと

775 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:50:10 ]
>>770
計算というか、中にある型やバッファのサイズの値を調べて取得する処理って事かな
内部的動作に詳しくないから、そういう処理は別になくて、バイナリコード的には
調べたサイズの値が直接入っているかもしれないけど。

776 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:08:44 ]
wikiをみると「コンパイル時に計算される」とあるね。
てことはバイナリコード的には取得した結果が直接入ってるって事か
ttp://ja.wikipedia.org/wiki/Sizeof


777 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:14:24 ]
>>773
そうです。タスクトレイへアニメーションつきで最小化をさせようと考えてます。
今、タスクトレイの座標取得をし、GetWindowRectで自ウィンドウのサイズを取得し、
DrawAnimatedRectsで自ウィンドウ位置からタスクトレイへアニメーションを考えてやってるんですが、少々問題がありまして。
文で説明するのが難しいんですが、ウィンドウは最大化状態ではないのに、アニメーションがウィンドウ一杯のメニューバーの大きさから
タスクトレイへ向かってアニメーションされてしまいます。それを自ウィンドウサイズに合わせる方法が全く分からず悩んでます。

>>774
DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?

778 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:15:53 ]
XPでの最小化の挙動を見ると、タイトルバーだけが縮小しながらタスクバーに向かう感じだな
同じような挙動にしいなら、タイトルバーサイズのサブウインドウを用意して
それを縮小アニメーションさせつつ指定座標に移動させていき、指定座標にたどり着いたら
元のウィンドウを非表示にする必要がある。

何に使うのかは知らないけれど。

779 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:30:35 ]
>>777
よくわからんけど、>>778の一行目みたいなウィンドウズ準拠の動きは嫌だってこと?
ウィンドウ全体が縮小しながら移動するようにしたい?
そうなるとやっぱ定期的にSetWindowPosでセットするしかないんじゃない?

780 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:39:35 ]
>>777
>DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?

GetWindowRectで取得したRECT構造体のデータを使いたいって意味なら

RECT構造体っていうのは、
left→左上座標 X
top→左上座標 Y
right→右下座標 X
bottom→右下座標 Y
の4つで構成されてるデータ。

SetWindowPosにはleft、top,、right - left、bottom - top の値を設定すればいい

781 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:41:16 ]
>>779
>>778のような動きをさせたいんで回答としては有難いものなんですが、タイトルバーサイズのサブウィンドウを用意する必要があるんでしょうか?
DrawAnimatedRectsのRECT構造体はタイトルバーサイズの数値が入ってればいいってものではないんですか?
開始点のRECTには、タイトルバーサイズの数値がそれぞれのメンバに入ってるんですが、
何故か最大サイズのタイトルバーからアニメーションが始まります・・


てゆーか、新しくそれ用にサブウィンドウを用意するのが良く分からない・・・w
それもまた調べなければですね^^;

782 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:43:44 ]
>>780
レスが食い違いました。
ちなみになんですが、SetWindowPosってのはウィンドウレベルの指定と、ただ画面を動かすものではないんですか?

783 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:46:58 ]
SetWindowPosはサイズも指定できるよ

というかDrawAnimatedRectsAPIで普通に>>778の動きになるような気がするんだけど
実際にそういうの作ったことないから俺は発言控えた方がいいな。
混乱させるだけみたいだし。



784 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:09:18 ]
>>782
と、言いつつ、試しにコレだけやってみたけど普通に動いてるよ
なんか範囲の設定が間違ってるんじゃない?

RECT rect, rect2;
GetWindowRect( hWnd, &rect);
rect2.left = 750;
rect2.top = 580;
rect2.right = 800;
rect2.bottom = 600;
DrawAnimatedRects(hWnd, IDANI_CAPTION, &rect, &rect2 );


785 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:17:00 ]
>>784
ありがとうございます。
私のは何が違っているのか判明しました。

上ではタスクトレイの座標を取得し、と書きましたがトレースしたら取得できてませんでした;;

HWND tray;
RECT stray;
tray = FindWindow("ModelApp","SysPager");
GetWindowRect(tray,&stray);

では取得できてませんでした。
DrawAnimatedRectsの方の使い方や考え方はあってたのに、こっちが違ったとはorz
FindWindowはこの記述じゃいけないんですかね?
ModelAppはエントリポイントで指定したClassNameです。

786 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:29:37 ]
>>785
参考になるかな?これまたやった事ないんで確証はないけど
ttp://www.geocities.jp/g_e_k_o_g_e_k_o/column/column.html

787 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:24:42 ]
>>786取り敢えずなんですが、以下のように記述してやってみましたが出来ませんでした;

HWND getTrayToolbar(HWND hToolbar)
{
HWND hTrayWnd, hNotifyWnd, hSysPager;

hTrayWnd = ::FindWindow("Shell_TrayWnd", NULL);
if (hTrayWnd == NULL)
return NULL;

hNotifyWnd = ::FindWindowEx(hTrayWnd, NULL, "TrayNotifyWnd", NULL);
if (hNotifyWnd == NULL)
return NULL;

// OSの違いを吸収
// SysPagerが取得できなかったときは、win2000,Meと仮定し、
// TrayNotifyWnd直下にToolbarWindow32がある可能性にかける。
hSysPager = ::FindWindowEx(hNotifyWnd, NULL, "SysPager", NULL);
if (hSysPager == NULL)
hSysPager = hNotifyWnd;

hToolbar = ::FindWindowEx(hSysPager, NULL, "ToolbarWindow32", NULL);
return hToolbar;
}

HWND tray;
RECT stray;

getTrayToolbar(tray);
GetWindowRect(tray,&stray);
これでstrayに座標が入ってるはずなんですが、表示してもちゃんとした数値は入ってませんでした。


788 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:31:40 ]
>>786
変に改造したのがよくなかったです。

HWND getTrayToolbar(HWND hToolbar)
{

HWND getTrayToolbar(void)
{
に戻し、

getTrayToolbar(tray); を
tray = getTrayToolbar();

にしたところ取得できました。

初心者の分かりづらい質問にも親切に答え、参考サイトを調べて頂いたりトレースして頂いたり本当に有難うございました!

789 名前:デフォルトの名無しさん [2008/02/04(月) 23:38:23 ]
Visual C++6.0 (WinNT4.0)で古いシステムのメンテナンスをやることになって
しまいました。VB5.0/6.0やVB.NET,C#.NETは使ってきましたがC++を実務で
するのは初めてです。

ソースを修正してデバッグモードで実行しても、デバッグウィンドウで表示される
結果は元のソースでの処理結果のままなのですが、こういうものなのでしょうか。
(ビルドして生成したDLLは修正したとおりに動く)

また、ビルド時に構成でReleaseとDebugが選択できますが、これの違いは
なんでしょうか。構成をDebugにしてもDLLは生成されますが、本来はReleaseで
作るべきものなのでしょうか。

790 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:13:20 ]
Debugビルドだと色々なエラーチェック用のマクロが定義されたり、
メモリ領域を利用する前に特定の値で初期化したりしてバグを発見しやすくしたり、
実行ファイルにデバッグ用の情報を埋め込んだり、最適化を無効にしてデバッガで追いやすくしたり。
つまり、デバッグ向けで速度が遅い、実行ファイルがでかい。
なので開発はDebugビルドで製品として出す場合はReleaseビルドかな。普通は。

VC6.0しらないし、デバッグウィンドウが何を指して言っているのか分からないけど
Releaseビルドだとうまくデバッグできないかもね。

791 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:31:39 ]
済みません、教えてください。
VC++で作ったプログラムで、例外が発生したときにデバッグ情報をファイルに
書き出すようにしたいと思うのですが、変数領域についてよく分からないのです。

ファイルアクセスとか例外が起きそうなところに__try,__exceptブロックを作って
GetExceptionInformation()で例外情報を取り込んで、
レジスタの値を調べて、スタック情報を記録するところまではできました。
ただ、これだけだとポインタの指すデータが残らないので不便だと思い、
データの領域も記録しようと思うのですが・・・どこら辺を記録すればいいのか
分かりません。

いろいろ調べたところ、.dataセクションと.bssセクションの領域はファイルヘッダから
計算できる(他に方法があれば教えてください)ことは分かったのですが、ヒープ領域の
アドレスってどうやって調べればいいのでしょうか?

あと、変数って.dataセクションと.bssセクションとスタックとヒープ領域に作られる
と思ってたんですけど、他の領域にも作られるんですか?

済みませんが、よろしくお願いします。








792 名前:789 [2008/02/05(火) 00:36:53 ]
>>790
ご回答ありがとうございます。
やはりReleaseビルドですべきですか。
ちなみに今、デバッグウィンドウに処理結果が反映されない、といっているのは
Debugビルドのものです。

793 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:44:59 ]
>>792
デバッグウィンドウってのは自動変数とかをのぞく奴?
ブレークポイント仕掛けてステップ実行してけば普通は値が反映されると思うけど。
正直よくわからん。



794 名前:789 [2008/02/05(火) 01:03:15 ]
>>793
そう、普通にブレークポイントで止めて、ステップ実行しながら変数の値を
追っかけていくのですが自分が追加したロジックを無視してしまうのです。
DLLを生成するとそのロジックを反映したもので動作するので不思議です。

795 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:10:35 ]
支障がないならリビルドしてみるとか・・

796 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:14:45 ]
リリースビルドで無視するのなら>>741の理由で普通にある事なんだが
デバッグビルドで無視するのは本当に飛ばしてるのか、
ブレイクポイントが適切な行に設定されてないのかどっちかかな

797 名前:789 [2008/02/05(火) 01:14:58 ]
>>795
とりあえず、本来は修正結果がデバッグでも反映されるべき、っていうのは
わかったのでまた試してみます。ありがとうございました。

798 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:22:13 ]
>>788
その引数の渡し方だと、実際に引数として渡した変数そのものではなくて
別の変数が関数内で作られてしまうから取得はできない

そういう場合は、HWND getTrayToolbar(HWND &hToolbar)
と記述すると、実際に渡した変数にそのまま格納される
じゃなければ、HWND *lphToolbar などとしてポインタを引数で渡すとか。


799 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 06:31:15 ]
Debugビルド = VisualStudioのデッバッガ用のビルド
デバッガ入れてない環境では動作しないしない可能性がある。
ビルドしたプログラムの配布禁止(ライセンス違犯)

800 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 11:19:38 ]
>>799
違犯ってなんだよ。違反なら判るが。

>>797
古いままのDLLが動いているって話か?

801 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:33:39 ]
関数名を入力すると引数とかがポップアップ表示される機能は、プロジェクトを作成しないと働かないみたいですが、
cppファイルとかを単体で開いた時にも機能するようにはできないでしょうか?

802 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:22:36 ]
同じ関数名だってリンクされるものが違ったら別の関数なんだから
そんなの無理に決まってるだろ

803 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:46:24 ]
リンクとか関係あるの?



804 名前:デフォルトの名無しさん [2008/02/05(火) 21:48:18 ]
goto label

805 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:16:22 ]
>>801
秀丸に単語補完機能がある。それで似たようなことはある程度可能。
と言ってもこういう質問がでる時点でIDEとかエディタとか知識が少なめに感じる・・・

806 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:48:18 ]
>>803
同名の関数を保持したライブラリやオブジェクトがハードディスク上に複数あるとする。
そのいずれも呼び出し側のcppファイルとは異なったフォルダにある。

さて、呼び出し側のcppファイルを解析するだけで、複数ある同名関数の中の
どれを呼び出せばいいのかがわかるだろうか?

807 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:02:48 ]
ヘッダだけで情報は充分じゃねーの。
インクルードパスさえなんとかなればな。

808 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:59:56 ]
まあどうにもならないけどな。

809 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 08:17:59 ]
>>806
どれを呼び出せばいいかなんて分かる必要があるの?
引数ならヘッダ見れば分かるし、というか分からないとコンパイルできないだろ

パスの設定は見落としてた

810 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:14:00 ]
VCのIDEはプロジェクトを作成して使う前提なんだから
嫌ならIDE使わなきゃいい

811 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:06:06 ]
>>809
ごめんごめん。

ライブラリやオブジェクト

ライブラリやオブジェクト、それに付随するヘッダ

という事で。

812 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:30:39 ]
しかしVSはcppとかの拡張子に関連付けたりするんだよな。
インストール直後いつものエディタが起動しないのであせるw

813 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:34:27 ]
>>809
どうしてもcpp単体で見られるようにしたいと言うんなら
自分で検索するインクルードヘッダの参照パスを指定できるエディタでも作ればいいよ。



814 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:35:29 ]
>>812
インストール時に関連付けの設定できなかったっけか

815 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:41:22 ]
>>814
できる、、けどOSから順番に入れなおしてるとインストール順によって
状況が変わるみたい。

816 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:15:59 ]
>809
だからプロジェクト作らないとコンパイルもできない。
プロジェクト作らずにコンパイルする方法もあるが

817 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:47:41 ]
Unixでpthreadを使ってマルチスレッドプログラムを作ってきました。
VisualC++では何を使ってマルチスレッドにするのが一般的ですか?

818 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:50:07 ]
createすれっど

819 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:44:23 ]
>>817
状況によって何を使うべきかが変わるので
一般的とかそんなの無い。

820 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:09:27 ]
強いて言うなら、どれも結局Win32 APIのCreateThreadに行き着く。

821 名前:デフォルトの名無しさん [2008/02/06(水) 19:11:48 ]
メニューに関して質問です。

CreateMenu(), AppendMenu() を使用して
"ファイル(&F)" [POPUP] (hMenuFile)
 "ファイルを読み込み"
 セパレータ
 "履歴" [POPUP] (hMenuRecent)→ "&0 " + path
 セパレータ
 終了(&X)

な感じに作成し、履歴からポップアップされるpathを選んだ時に
GetMenuItemRectで位置を取得しようとするのですが、
インデックスを試しに0にして値を調べて見ると、
hMenuFileの時でもhMenuRecentの時でも同じ、つまり"ファイルを読み込み"の位置情報しか取得しません。
インデックスを1にすると、0の時のtopに履歴からポップアップされたメニューの縦幅がプラスされた値になります。
ちなみに、上の二つのメニューハンドル値は、ちゃんと違う値でした。
色々条件を変えながらやってるのですが、どうしても path にあたる位置情報取得出来ず、、どの辺が間違ってるのでしょうか?


822 名前:デフォルトの名無しさん [2008/02/06(水) 20:55:36 ]
今DXライブラリをインストールとMicrosoft Platform SDKもダウンロードしてライブラリを使うためにhomepage2.nifty.com/natupaji/DxLib/dxuse_vc2005express.html#R3を参照にして設定してたんですが、
#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{ if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{ return -1 ; // エラーが起きたら直ちに終了
}
DrawPixel( 320 , 240 , 0xffff ) ; // 点を打つ
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
で、------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------
コンパイルしています...
DrawPixel.cpp リンクしています...
LINK : fatal error LNK1104: ファイル 'DxLib_d.lib' を開くことができません。
ビルドログは "file://c:\Documents and Settings\user\My Documents\Visual Studio 2005\Projects\test2\Debug\BuildLog.htm" に保存されました。
test2 - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

となって進みません。どうすればいいのでしょうか?
よろしくお願いします。

823 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:13:07 ]
>LINK : fatal error LNK1104: ファイル 'DxLib_d.lib' を開くことができません。
そのライブラリをリンクしてください



824 名前:デフォルトの名無しさん [2008/02/07(木) 08:57:44 ]
ソリューションをビルドするとき,複数のプロジェクトを
依存関係に注意しながら並列にビルドすることができますよね?

一つのプロジェクトに含まれる複数のコンパイル単位を
並列にコンパイルさせるということは VC++ の IDE では
無理なんでしょうか?

GNU make だとできるんですが,できれば IDE で
できればいいなと思っています.

825 名前:824 [2008/02/07(木) 09:07:37 ]
Visual C++ 2008 からは /MP があることを発見したのですが,
これって /Yc や /Gm と競合するんですね.
/Yc は別途プリコンパイルヘッダを作ってやればいいだけなのですが,
/Gm ってはずしちゃうと逆効果なのかなぁ.
/Gm の効果をいまいち実感できていないのではずして /MP 使った方がいいですかね?

826 名前:デフォルトの名無しさん [2008/02/07(木) 09:40:24 ]
//あいうえお
class Aiueo{
 定義
};

のように書いておけば IntelliSense で Aiueo のインスタンスを
ポイントしたときに「あいうえお」も含めて表示してくれたり
しませんかね?

C++ ではコード内のコメントでドキュメンテーションするのは
無理なんでしょうか? C# だとその辺の機能があるんですが・・・

827 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:05:59 ]
>>825
使った方がいいですかねじゃなくてさ
使ってみればいいじゃない

828 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:27:42 ]
本人に違いがわからないならどっちでも同じこと

829 名前:デフォルトの名無しさん [2008/02/07(木) 13:17:27 ]
カット&ペーストなどによりインデントの違う
コード(タブが 2 と 4)が混在しているとき、
一気に整形し直すことってできないでしょうか?
C#では貼り付けた時に自動的に整形してくれるのですが
C++では無理ですか?

830 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:26:29 ]
C++は知らないけど
VC++のエディタでできたと思う

831 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:41:29 ]
C++の質問はC++スレですればいいよ

832 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:47:20 ]
>829
CでよければK&Rにタブをスペースに変換する演習問題があったよ

833 名前:デフォルトの名無しさん [2008/02/07(木) 13:51:19 ]
>>831 Visual C++ の IDE のエディタでの話です



834 名前:デフォルトの名無しさん [2008/02/07(木) 15:09:09 ]
IntelliSenseでメンバーの補完をしようと一覧を
出しているとき private や protected のメンバを
一時的に隠したいとかできますか?
どうせアクセスできない基底クラスのメンバがずらずらと・・・

835 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:45:42 ]
そんなことができるって話は聞いたことないです






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

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef