★初心者にVisual C++ ..
[2ch|▼Menu]
643:デフォルトの名無しさん
08/01/21 17:45:19
Windowでプロジェクト全検索してみれば?
どっかでアホな事やってるんだろう

644:デフォルトの名無しさん
08/01/21 20:47:59
Visual Basicにはちゃんとしたスレはないの?
変な流れのネタスレしかないお。

645:デフォルトの名無しさん
08/01/21 22:42:25
VB(笑)

646:デフォルトの名無しさん
08/01/22 01:09:20
澄んだ目で見れば、ネタスレなどない。

647:デフォルトの名無しさん
08/01/22 05:14:22
>>644
サイトが充実してるから2ちゃんでやらんでいいやろ

648:名無しさん@ゴーゴーゴーゴー!
08/01/22 10:08:57
VisualStadio2005を使っています。
コンパイルオプションにdefineを追加するのはどうやったらいいのでしょうか。

#define _CRT_SECURE_NO_DEPRECATE 1
#pragma warning(disable:4312)
#pragma warning(disable:4996)

上記のをソースに書かず、オプションに追加したいんですが、
プロジェクト→〜のプロパティ→C/C++→コマンドラインの中に書くのでは違うのでしょうか?
どこに、どう書いたらいいのか分かりません。
分かる方お願いします。

649:デフォルトの名無しさん
08/01/22 10:21:31
>>648
コマンドラインに書いてもいいけど、VC++でやるなら普通は
プロパティのC/C++ - プリプロセッサの「プリプロセッサの定義」

650:デフォルトの名無しさん
08/01/22 10:23:34
あー、あとpragmaのほうは同じく C/C++ - 詳細の「指定の警告を無効にする」

651:デフォルトの名無しさん
08/01/22 10:48:29
出来ました。ありがとうございます。

652:デフォルトの名無しさん
08/01/22 13:18:08
Visual C++とかVBの如くバカにされたときの反応を教えろ。(・∀・)

653:デフォルトの名無しさん
08/01/22 14:42:41
スルー

654:デフォルトの名無しさん
08/01/22 14:52:15
そうなんだーって言う

655:デフォルトの名無しさん
08/01/23 01:42:39
Visual Studio.NET 2003でWin32のプログラムを作りました。
Visual Studio上でデバッグ起動することはできるんですが、

使ってる画像などを含めて、他のPCで動かすためのexeファイルを作るには
どうすればいいんでしょうか?

解説してるサイトなどあったら、教えてもらえませんか。

656:デフォルトの名無しさん
08/01/23 07:03:54
exe作らずデバッグできるほどVC++は器用じゃない

657:デフォルトの名無しさん
08/01/23 09:39:25
Release版の話?インストーラーの話?

658:デフォルトの名無しさん
08/01/23 10:12:49
>>656
Debugフォルダにexeができてました。
画像を同じフォルダに入れたら動きました。

>>657
インストーラの作り方もできれば知りたいです。
exeファイルにアイコン画像をつける方法とかも。

659:デフォルトの名無しさん
08/01/23 10:42:29
すごく基本的なことだから少し勉強すればすぐわかると思う

660:デフォルトの名無しさん
08/01/23 15:08:16
リソースエディタで検索

661:デフォルトの名無しさん
08/01/23 15:22:03
>>660
?????????????????????????????????????????????

662:デフォルトの名無しさん
08/01/23 16:25:10
DirectShowを用いて二つのカメラからの信号をそれぞれサンプルグラバフィルタを使用して入力し、
RGB情報をカメラごとの配列に入れて画像処理で用いたいのですが、なかなかうまくいきません。
どのようにすればいいか、ご教示願えませんでしょうか。

663:デフォルトの名無しさん
08/01/23 16:26:45
VC++関係ない気が

DirectShowと戦うスレ Part 2
スレリンク(tech板)

ここの誤爆?

664:http://p1062-ipbf4007marunouchi.tokyo.ocn.ne.jp.2ch.net/
08/01/23 16:31:20
tbs 

665:p1062-ipbf4007marunouchi.tokyo.ocn.ne.jp
08/01/23 16:34:16
tbs 

666:655
08/01/23 23:25:43
>>659
基本的なことなら、もう少し自力で調べてみます。

667:デフォルトの名無しさん
08/01/24 19:54:53
VC++2002 MFC で
CFormViewにリストコントロールを配置しています
リストコントロールの幅や高さ等を取得したいのですがうまくいきません
コントロールのサイズを取得する方法を教えてください

668:デフォルトの名無しさん
08/01/24 20:13:28
自己解決しました

669:デフォルトの名無しさん
08/01/25 13:28:26
VARIANTとCStringの変換について教えてください。
下記のようなコーディングで問題ないでしょうか?

//VARIANTからCString
CString hoge = newValue.bstrVal;


//CStringからVARIANT
CString hoge = "hoge";
vaResult.vt = VT_BSTR;
vaResult.bstrVal = hoge.AllocSysString();


670:デフォルトの名無しさん
08/01/25 17:42:48
それでいいけど、VARIANTからCStringへは、
単にCString hoge = newValueでいけるはず。

あと場合にもよるけど、CComVariant (ATL), COleVarinat(MFC)もよろしく。

671:デフォルトの名無しさん
08/01/25 20:59:51
プロジェクト内のファイルのファイル名を変更する
簡単な方法があれば、教えてください。現在は次の
方法でファイル名を変更しています。
(Visual C++6.0です。)

(1) プロジェクトからそのファイルをいったん除外する。
  (FileViewでファイルを選択し[編集]→[削除])

(2) エクスプローラでファイル名を変更。

(3) そのファイルをプロジェクトへ再度追加する。
  [プロジェクト]→[プロジェクトへ追加]→[ファイル]

672:デフォルトの名無しさん
08/01/25 21:10:10
>>671
(1)の後、エクスプローラで操作しなくても、
(3)の追加時にファイル名変更すればいい。

673:671
08/01/25 21:17:46
>>672
なるほど。ありがとうございました。

674:デフォルトの名無しさん
08/01/27 00:37:17
俺メモ

ShowCursor()関数は単純に表示のON/OFFを切り替えるものではない
表示カウンタという意味不明なカウンタを持ってるらしく
ON/OFF切り替えるには同じ回数だけtrueとfalseをセットする必要がある
氏ねよMS('A`)

675:デフォルトの名無しさん
08/01/27 00:40:02
MSDN見ずにAPIを叩いてはいけないという例。

>Parameters bShow
>[in] Specifies whether the internal display counter is to be incremented or decremented.
>If bShow is TRUE, the display count is incremented by one.
>If bShow is FALSE, the display count is decremented by one.

>Remarks
>This function sets an internal display counter that determines
>whether the cursor should be displayed. The cursor is displayed
>only if the display count is greater than or equal to 0.

676:デフォルトの名無しさん
08/01/27 00:53:55
流石にそれで氏ねは可哀想だろ。
とはいえ、自分で使うとしたらラッパ書いて単純トグルにしてしまいそうだけど。

677:デフォルトの名無しさん
08/01/27 02:53:52
FileViewのツリーの中でファイルはファイル名の順に
並ぶようですが、この順序を変更することはできるでしょうか?
Visual C++6.0です。

678:デフォルトの名無しさん
08/01/27 06:55:10
>>675
VSとJaneDoeStyleとブラウザ開いたら重すぎてMSDNなんて見れない、というか見たくない。

679:デフォルトの名無しさん
08/01/27 09:54:30
そんなにヘボPCなのかw

680:デフォルトの名無しさん
08/01/28 09:41:50
昔は描画するときにマウスカーソル消して描いてたからな。
カウンタはあって当たり前の必須機能だったな。
今だとカーソル消すなんてよほどのことじゃないか?

681:デフォルトの名無しさん
08/01/28 10:42:37
>>679
メモリが256MiBもあってCPUの速度も2GiHz超えしているという、
世界初のコンピュータとは比べ物にならないほどの高い性能を持ち合わせた俺のマシンが唸る!

682:デフォルトの名無しさん
08/01/28 16:27:12
>>680
エロゲで数秒たったらカーソル消すのは必須機能だよ


683:デフォルトの名無しさん
08/01/28 16:33:52
ああ、今は動画とかで消しっぱにするってことか
ウィンドウのカーソルを見えないやつに差し替えじゃあかんのかな?
ゲームは自前カーソルが多い気がするから、別の話か。

684:デフォルトの名無しさん
08/01/30 07:45:29
プログラムは無事に完成しリリースビルドしたのですが、
コンパイル済み実行ファイルをテキストエディタ等で開くとエラー時に表示するメッセージや
読み込むファイル名がそのまま見えてしまいます
これはセキュリティ上よろしくないと思うのですが見えなくする方法はあるのでしょうか?

685:デフォルトの名無しさん
08/01/30 09:33:51
自分でリソースに定義したやつだったら好きなように暗号化できるだろ

686:デフォルトの名無しさん
08/01/30 13:21:11
それが見えて何か困ることでも?
まあ隠したいんならテキストを圧縮するなり文字コードに
無駄な数字を足すなりなんなりとすればいい

687:デフォルトの名無しさん
08/01/30 13:25:53
そういえば昔exeの中からパスワード探したりしてた
今はネットで探せばたいてい見つかる

688:デフォルトの名無しさん
08/01/30 14:09:44
パスワードを探す用途って何?

689:デフォルトの名無しさん
08/01/30 14:25:22
>>684
どうせエラー時に表示するんなら隠す必要もないのでは?
あと開くファイル名なんてFilemonでも使えばすぐ分かる.

690:デフォルトの名無しさん
08/01/30 14:31:39
昔の雑誌に掲載されていたアドベンチャーゲームとかは暗号化してたな。
あれは打ち込む人=プレーヤーだからなあw

691:デフォルトの名無しさん
08/01/30 15:05:57
VC++6のコンソールアプリケーションで、Ctrl-Cをトラップすることはできますか?

692:デフォルトの名無しさん
08/01/30 17:25:17
ごにょぼにょする時じゃーねの?

693:デフォルトの名無しさん
08/01/30 17:29:26
>>691
SIGINTのトラップのことなら、SetConsoleCtrlHandler

694:デフォルトの名無しさん
08/01/30 18:17:47
シギント

695:デフォルトの名無しさん
08/01/30 20:26:58
C++で

気温 : ○○℃
湿度 : ○○%
風速 : ○○(m/s)

という複数行のパラメータを上書き表示するにはどのようにすれば宜しいのでしょうか?
一行だと"\r"を使ってできたのですが。。。
教えて君で申し訳ありません(>_<)

void show()
{
cout << "気温 : " << a << "\r" ;
cout << "湿度 : " << b << "\r" ;
cout << "風速 : " << c << "\r" ;

}

とすると全て上書きされて一行しか表示できませんでした・・・。


696:デフォルトの名無しさん
08/01/30 21:07:04
\rを\nに

697:デフォルトの名無しさん
08/01/30 21:15:37
複数行だと、ANSI.SYS組み込み+エスケープシーケンス、
もしくはAPI直呼び出しでもしないと駄目だと思う。

698:デフォルトの名無しさん
08/01/30 21:34:04
コンソールAPI使えばいいんじゃねーの?使った事ないからしらんけど。

699:デフォルトの名無しさん
08/01/31 06:34:55
先輩の方々に質問です。
Visual C++ 2008 Expressをインストールして、
mfcのプログラム(サンプルプログラム diblook)をビルドしたのですが、
afxwin.hが見つからないよエラーとなってしまいました。
2008 ExpressにはMFCがついていないんでしょうか?


700:デフォルトの名無しさん
08/01/31 06:35:24
はい

701:デフォルトの名無しさん
08/01/31 16:19:25
Expressにはついてないよ
もしついてたから誰も有料のやつ買わないでしょ

702:デフォルトの名無しさん
08/01/31 16:20:53
>>701修正


Expressにはついてないよ
もしついてたら誰も有料のやつ買わないでしょ

703:デフォルトの名無しさん
08/01/31 18:36:36
リストコントロールについて質問です。

レポート形式で、カラムヘッダにツールチップを表示したいのですが可能でしょうか?
可能であれば、やり方をお聞きしたいです。
よろしくお願いします。

VC.NET、MFC使用です。

704:デフォルトの名無しさん
08/01/31 19:47:30
>>700-702
ありがとうございます。
言われてみればそうですね。商売にも使えるわけですから
どこの企業も買わなくなっちゃいますね。
仕方ないのでWin32 Apiでしこしこ書くことにします。

705:sage
08/01/31 23:16:08
VC++2005ExEditionのWindowsフォームを使って簡単なアプリを作っているのですが
ある程度行数のある文字列をForm内に出力したいのですがどうしたらよいでしょうか?
イメージとしてはDOS窓みたいなものを作りたいのですが・・・どうかご教授お願いします。

706:デフォルトの名無しさん
08/01/31 23:34:40
適当にプロパティをいじる。

707:デフォルトの名無しさん
08/02/01 15:10:08
VC++2008 Expressを使って、コマンドラインベースのプログラムを作っています。
実行時の実行プライオリティ設定したいのですが、どの関数を使えばよいのでしょうか?

708:デフォルトの名無しさん
08/02/01 16:00:45
>>704
もうこのさいだから C++/CLI でフォームアプリにしちゃいな!

709:デフォルトの名無しさん
08/02/01 18:01:55
//ChildView.cpp


//winmm.libにリンクする
#pragma comment(lib,"winmm")

・・・

void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。

PlaySound("WinXP_Startup",NULL,SND_RESOURCE | SND_ASYNC | SND_LOOP);

CWnd::OnLButtonDown(nFlags, point);
}


PlaySound関数を使いたいのですが、上記のようにコーディングすると

error C2065: 'SND_RESOURCE' : 定義されていない識別子です。
error C2065: 'SND_ASYNC' : 定義されていない識別子です。
error C2065: 'SND_LOOP' : 定義されていない識別子です。
error C3861: 'PlaySound': 識別子が見つかりませんでした

とコンパイルエラーがでてしまいます。
どのようにすればエラーがでなくなるか、教えていただけないでしょうか。

710:デフォルトの名無しさん
08/02/01 18:16:35
#include <MMsystem.h>
かな。
WIN32_LEAN_AND_MEANでもいいがMFCだとよくわからん

711:デフォルトの名無しさん
08/02/01 19:11:47
>707
SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS );
みたいな?

712:デフォルトの名無しさん
08/02/01 20:37:14
>>707
プロセス単位なら、startコマンドのオプションでもいけるよ。

713:デフォルトの名無しさん
08/02/02 22:34:28
テンプレートの有用性と使い道がイマイチ理解できません



714:デフォルトの名無しさん
08/02/02 22:40:22
>>713
Wikipedia項目リンク

715:デフォルトの名無しさん
08/02/02 23:04:36
いやいや、テンプレートの本質はそこじゃないだろう。
テンプレートの有用性が知りたければboostのソースを嫁。

716:デフォルトの名無しさん
08/02/03 01:08:22
OpenCVをWindows form Applicationで使うための設定の仕方を教えてください。
環境は、Visual c++ 2005 Express Editionです。
ビルドのエラーを解決できなくて困っています。
VCの使い方が間違っていることが原因っぽいのですが・・・
エラー
1>c:\program files\opencv\cxcore\include\cxtypes.h(212) : warning C4793: '__asm' : 関数 'int cvRound(double)' 用にネイティブ コードの生成が発生します
1> c:\program files\opencv\cxcore\include\cxtypes.h(205) : 'cvRound' の宣言を確認してください。

717:デフォルトの名無しさん
08/02/03 07:59:00
先日ここで2008 ExpressにMFCがあるか聞いたものです。
Win32を使ってコンソール型のコマンドが完成したのですが、
やはり画面をつけてあげたいなと思っています。
Win32で画面を作るのは敷居が高そうなので(リソースエディタがないなど)
他によい方法があれば採用したいのですが、どんな仕組みがあるんでしょうか。
CLIってのがそうなのかな?心配しているのは、ランタイムパッケージやら
DLLをごっそりインストールすることにならないかなんです。
単純な機能のツールをネットで配布するんで、できれば身軽に、余分なものは
なしでいきたいんです。そんなわたしにぴったりの何かはあるんでしょうか?
長文失礼しました。

718:デフォルトの名無しさん
08/02/03 08:48:07
無名 delegate とか Lambda 式とか見てると C# がうらやますぃ.
それでも C++ から離れられない俺はどうすればいいですか?
boost::lambda でしょうか?
C++09 を待てばいいのでしょうか?
C# の yield とかもうらやますぃ.
LINQ は微妙.なれればいいんだろうな.

719:デフォルトの名無しさん
08/02/03 10:55:04
>>717
画面はdelphi 6 personalで作ればおk
簡単に作れてランタイムもいらない。開発環境は無料。

720:デフォルトの名無しさん
08/02/03 13:44:01
Visual Sturdio.NET 2003でWin32プログラムをデバッグ実行すると、

出力に
'aaa.exe': 'C:\WINDOWS\system32\XXX.dll' を読み込みました。シンボルが読み込まれていません。
というメッセージがたくさんでるんですが、これは何なんでしょうか?

ググると問題無いと書いてたんですが、できれば出ないようにしたいです。

721:デフォルトの名無しさん
08/02/03 14:16:52
無理

722:デフォルトの名無しさん
08/02/03 15:37:30
gcc用で配布されているコードを,
VisualStudio2005でコンパイルしたところ,
エラー 1 error C2143: 構文エラー : '{' が ':' の前にありません。 c:\program files\microsoft visual studio 8\vc\include\cmath 18
エラー 2 error C2059: 構文エラー : ':' c:\program files\microsoft visual studio 8\vc\include\cmath 18

といった無数のエラーが出ました.

ちなみにcmathはインクルードしておらず,
#include<stdio.h>

#include<stdlib.h>


#include<math.h>

#include<complex>
だけです.

どなたかアドバイス頂けませんでしょうか?
C/C++スレでも質問書いたのですが,
こっちのスレの方が適切なようでマルチポストさせて頂きました.

723:デフォルトの名無しさん
08/02/03 16:34:56
>>722
cmathを直接includeしてないけれども
complexの中でcmathがincludeされてるからなぁ。

で、エラーの原因はその情報だけじゃ分からない。
C2143やC2059はエラー出力に表示されている箇所よりも
前の場所での構文ミスで出ることもあるから。
他の場所で'}'の閉じ忘れなんてのも原因になりうる。

もしかしたらとは思うが、拡張子が.cになっているんじゃないかな?
そうなら.cppに変えたらうまくいく可能性が高いな。

724:デフォルトの名無しさん
08/02/03 16:57:50
>>720
該当のDLLをリンクからはずせば出なくなると思うけど
必要になったらまたリンクからはずせばいい

725:デフォルトの名無しさん
08/02/03 16:58:44
ごめん
必要になったらまたリンクからはずせばいい
→必要になったらまたリンクすればいい


726:デフォルトの名無しさん
08/02/03 17:03:31
シンボル入れとけばいい

727:722
08/02/03 17:15:59
>>723
拡張子変えたらこのエラーは解決しました!ありがとうございます!
別のエラー出たのでまた頑張ります.

728:デフォルトの名無しさん
08/02/03 17:18:29
>>722
コンソールプロジェクトを作って放り込んでるんなら
stdafx.hをインクルードしないとダメかも
じゃなきゃプリコンパイル済みヘッダーを使用しないにするか


729:デフォルトの名無しさん
08/02/03 17:19:11
うわ、恥ずかしい><もう解決してたのね

730:デフォルトの名無しさん
08/02/03 19:21:19
インクルードガードは#pragma onceでしょうか?
それとも#ifndef HOGOHOGE_H_IS_INCLUDEDでしょうか?

731:デフォルトの名無しさん
08/02/03 20:03:20
#pragma onceって標準の仕様なのか?

732:デフォルトの名無しさん
08/02/03 20:21:31
標準規格には含まれていないが、
現在は殆どのコンパイラで通るようになっている。gccも。
今は、対応を気にせずに使える段階に入ってるんじゃないかな。

733:デフォルトの名無しさん
08/02/03 20:27:25
よくVisualStudio自体の機能かな、で、デバッグ機能が強力だーとか聞くんですが
詳しく解説しているページとかないでしょうか?

ブレイクポイントっていうのがそこでストップするっていうのはわかってたりするんですが
それの使いどころが判然としなかったり、他の機能に関してもそうです

734:デフォルトの名無しさん
08/02/03 21:18:28
つ ステップ実行
ウォッチウィンドウ等で変数の中身を確認しながら実行すれば、
論理的なエラーを発見するのに死ぬほど役立つ。
呼び出し履歴を併用すれば、変数の状態も追いかけ放題。

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

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

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

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

738:デフォルトの名無しさん
08/02/03 21:27:37
あんまり自慢にならんね、それは。

739:738
08/02/03 21:30:48
>>738>>736 宛てな。

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

740:733
08/02/03 21:49:54
>>734
ループ部分とかループ回数分確認し続ける、とかなりそうですね・・・
使いどころが難しそうだ

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



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

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

742:733
08/02/03 22:42:26
>>741
なるほど、それなら便利そうです

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

ありがとうございました

743:733
08/02/03 22:43:15
うわあげちゃったごめんなさいorz

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

745:デフォルトの名無しさん
08/02/03 23:55:22
VCEEについては、そんなに変更はなかったんじゃないかな。

746:デフォルトの名無しさん
08/02/04 01:24:04
新しいものが好きなら2008
安心を得たいなら2005

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

748:デフォルトの名無しさん
08/02/04 07:49:46
locel

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

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

751:デフォルトの名無しさん
08/02/04 11:28:08
printfならいっぱい入れるけど

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

753:デフォルトの名無しさん
08/02/04 13:50:48
ここ初心者スレですけど

754:752
08/02/04 14:01:06
すみません、、、スレを改めます。
失礼しました。


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

756:デフォルトの名無しさん
08/02/04 16:55:07
REG_MULTI_SZで検索

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

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

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


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

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

760:757
08/02/04 18:27:20
>>758
ありがとうございます。
とりあえずputcharにしました。
速くなった気はしないでもないです。

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


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


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

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

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

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

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

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

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

769:100
08/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:デフォルトの名無しさん
08/02/04 18:57:07
>>767
計算するって言ったって、何を計算すると思ったのかね。
まさか、size_t foo = 4; は計算すると思わないだろ?
size_t foo = sizeof(int); は?
勿論、size_t foo = sizeof(buff); だって同じことだ。

771:757
08/02/04 19:00:30
>>762
おぉ!これは速そうですね!


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

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

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

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

776:デフォルトの名無しさん
08/02/04 20:08:44
wikiをみると「コンパイル時に計算される」とあるね。
てことはバイナリコード的には取得した結果が直接入ってるって事か
Wikipedia項目リンク


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

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

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

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

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

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


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

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

783:デフォルトの名無しさん
08/02/04 20:46:58
SetWindowPosはサイズも指定できるよ

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

784:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/04 21:17:00
>>784
ありがとうございます。
私のは何が違っているのか判明しました。

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

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

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

786:デフォルトの名無しさん
08/02/04 21:29:37
>>785
参考になるかな?これまたやった事ないんで確証はないけど
URLリンク(www.geocities.jp)

787:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/04 23:31:40
>>786
変に改造したのがよくなかったです。

HWND getTrayToolbar(HWND hToolbar)
{

HWND getTrayToolbar(void)
{
に戻し、

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

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

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

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

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

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

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

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

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

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








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

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

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

795:デフォルトの名無しさん
08/02/05 01:10:35
支障がないならリビルドしてみるとか・・

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

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

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

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


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

800:デフォルトの名無しさん
08/02/05 11:19:38
>>799
違犯ってなんだよ。違反なら判るが。

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

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

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

803:デフォルトの名無しさん
08/02/05 21:46:24
リンクとか関係あるの?

804:デフォルトの名無しさん
08/02/05 21:48:18
goto label

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

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

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

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

808:デフォルトの名無しさん
08/02/06 00:59:56
まあどうにもならないけどな。

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

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

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

811:デフォルトの名無しさん
08/02/06 13:06:06
>>809
ごめんごめん。

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

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

という事で。

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

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

814:デフォルトの名無しさん
08/02/06 13:35:29
>>812
インストール時に関連付けの設定できなかったっけか

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

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

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

818:デフォルトの名無しさん
08/02/06 14:50:07
createすれっど

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

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

821:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/06 20:55:36
今DXライブラリをインストールとMicrosoft Platform SDKもダウンロードしてライブラリを使うためにURLリンク(homepage2.nifty.com)を参照にして設定してたんですが、
#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:デフォルトの名無しさん
08/02/06 21:13:07
>LINK : fatal error LNK1104: ファイル 'DxLib_d.lib' を開くことができません。
そのライブラリをリンクしてください

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

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

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

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

826:デフォルトの名無しさん
08/02/07 09:40:24
//あいうえお
class Aiueo{
 定義
};

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

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

827:デフォルトの名無しさん
08/02/07 12:05:59
>>825
使った方がいいですかねじゃなくてさ
使ってみればいいじゃない

828:デフォルトの名無しさん
08/02/07 12:27:42
本人に違いがわからないならどっちでも同じこと

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

830:デフォルトの名無しさん
08/02/07 13:26:29
C++は知らないけど
VC++のエディタでできたと思う

831:デフォルトの名無しさん
08/02/07 13:41:29
C++の質問はC++スレですればいいよ

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

833:デフォルトの名無しさん
08/02/07 13:51:19
>>831 Visual C++ の IDE のエディタでの話です

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

835:デフォルトの名無しさん
08/02/07 17:45:42
そんなことができるって話は聞いたことないです

836:デフォルトの名無しさん
08/02/07 19:40:58
>>829
Alt + F8 かな。

837:デフォルトの名無しさん
08/02/07 23:18:48
>>834
>一時的に隠したいとかできますか?
「一時的に隠したい」と願うことはできます。


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

4370日前に更新/252 KB
担当:undef