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

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

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

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

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

688 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:09:44 ]
パスワードを探す用途って何?

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

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

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

692 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:25:17 ]
ごにょぼにょする時じゃーねの?



693 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:29:26 ]
>>691
SIGINTのトラップのことなら、SetConsoleCtrlHandler

694 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:17:47 ]
シギント

695 名前:デフォルトの名無しさん [2008/01/30(水) 20:26:58 ]
C++で

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

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

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

}

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


696 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:07:04 ]
\rを\nに

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

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

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


700 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 06:35:24 ]
はい

701 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:19:25 ]
Expressにはついてないよ
もしついてたから誰も有料のやつ買わないでしょ

702 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:20:53 ]
>>701修正


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



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

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

VC.NET、MFC使用です。

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

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

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

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

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

709 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:16:35 ]
#include <MMsystem.h>
かな。
WIN32_LEAN_AND_MEANでもいいがMFCだとよくわからん

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

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



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



714 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:40:22 ]
>>713
ja.wikipedia.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29

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

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

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

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

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

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

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

721 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:16:52 ]
無理

722 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:34:56 ]
>>722
cmathを直接includeしてないけれども
complexの中でcmathがincludeされてるからなぁ。

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

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

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

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


726 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:03:31 ]
シンボル入れとけばいい

727 名前:722 mailto:sage [2008/02/03(日) 17:15:59 ]
>>723
拡張子変えたらこのエラーは解決しました!ありがとうございます!
別のエラー出たのでまた頑張ります.

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


729 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:19:11 ]
うわ、恥ずかしい><もう解決してたのね

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

731 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:03:20 ]
#pragma onceって標準の仕様なのか?

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



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

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

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

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 );







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

前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