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


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

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



1 名前:デフォルトの名無しさん [2007/01/10(水) 00:00:39 ]
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

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


666 名前:デフォルトの名無しさん [2007/03/06(火) 17:43:19 ]
コンピュータ名の取得の仕方を教えてください

667 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:43:24 ]
// ビットマップ情報の取得 
pGrab -> GetConnectedMediaType( &amt ); 
// ビデオ ヘッダーへのポインタを獲得する。 
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat; 


ちゃんと取れてるんだろうな。
エラーチェックぐらいは当然やってるよな?

668 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:43:59 ]
>>666
ぐぐれ

669 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:46:00 ]
>>667
いかんせんデバッグモードみたいなのがないのですよ。orz
これがXtra開発の嫌なところで(ry

>>658のサンプルをコンパイルして実行したら普通に動くのでたぶん取れてるはず。

670 名前:655 mailto:sage [2007/03/06(火) 17:46:59 ]
>>656-657
まだ確認はとれていないのですが、やってみます。
ご回答ありがとうございます。

671 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:54:40 ]
せめてASSERTくらい入れとけ

672 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:59:29 ]
ちなみに>>663中略以降を

// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));

てな感じにすると普通に動くます。
だけどこれじゃBITMAP情報取れないので意味がない。orz

673 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:10:50 ]
>>672
違いがわからんぞ
BITMAPINFO BitmapInfo; の場所だけか?

674 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:16:49 ]
>>673
そうなのです。



675 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:17:22 ]
Xtraって知らないけど663のCopy前で

BITMAPINFO tmp;
if( tmp.bmiHeader.biSize != BitmapInfo.bmiHeader.biSize)
  MessageBox(0,"勘弁してよ",0,0);

ってやったらどうなる?

676 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:20:27 ]
グローバル変数なのかよ。
本来BitmapInfoは可変サイズだからそのまま宣言することは
あまりないんだが、、まあヘッダだけ欲しいならいいのか・・・

まずは、BitmapInfoのアドレスと、sizeof(BitmapInfo)を出してみ

677 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:03 ]
あ、だめだ675は忘れて

678 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:10 ]
>>675
「勘弁してよ!」って言われた!

・・・つまりどういうこと?(;´д`)

679 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:21:39 ]
>>675
初期化してないbiSizeに意味が?

680 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:25:18 ]
sizeof(BitmapInfo)を出そうとしたら落ちる・・・orz

681 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:26:42 ]
BitmapInfoって名前がよくないw
何かとぶつかってんじゃないのか

682 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:29:52 ]
MessageBox(0,(const char *)&BitmapInfo,0,0);
なんてのを加えたら空ダイアログが出たけどこれ壮大に間違ってますよねorz

683 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:34:05 ]
正直、全体的にツッコミどころ満載。

684 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:35:02 ]
そういうのは、
sprintf(str, "%X", &BitmapInfo);
とかやるもんだ



685 名前:658 mailto:sage [2007/03/06(火) 18:38:57 ]
>>684
stdioは使えないのですよ。
コンソールとか開きませんし。

686 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:41:41 ]
あ、使えるか。orz

687 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:43:51 ]
アドレス:1000E380
sizeof(BitmapInfo):44
と出ました。

688 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:55:13 ]
で、ZeroMemoryで落ちなくて
CopyMemoryで落ちるのか?

ローカルでBITMAPINFO を作ってそっからコピーしては。
とにかく、オオボケかましてる率98%だからな

689 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:07:42 ]
>>688
大ボケですか・・・orz

class Cam {
BITMAPINFO BInfo;

とか宣言して

// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
BInfo = BitmapInfo;

なんてやっても落ちます。

690 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:14:01 ]
初心者スレだから言うけれど
落ちるにも色々あるんだ。

落ちた時のエラーメッセージを貼り付けるとよいかと

691 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:14:22 ]
BInfo = BitmapInfo;
で落ちるのか?
落ちるというのは、その行で落ちるのか?

BInfo.bmiHeader.bfType とか、各メンバにはアクセスできるのか?

692 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:19:25 ]
>>690
A fatal error has occurred. Director will quit now.
と出た後
Warning! Director is completely out of memory and
must exit immediately.
てなダイアログが出て終了しま。

693 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:20:18 ]
>>691
その行で落ちるので以降アクセスできるかどうかもわかりません。

694 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:25:58 ]
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
char str[100];
sprintf(str, "%X", &BInfo);
MessageBox(0,str,0,0);
printf(str, "%d", BInfo.bmiHeader.biWidth);
MessageBox(0,str,0,0);
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));

てな感じだと普通に動きます。



695 名前:658 mailto:sage [2007/03/06(火) 20:32:33 ]
似たプログラムが手元にあるんですけどそっちは普通に動くんですよね・・・。orz

とりあえず、もうちょい一人であれこれ考えてみます。

696 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:09:09 ]
どっかでスタック壊してそうな
こっちで再現できるだけのコードが無いともうわからん

697 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 09:12:52 ]
SendInput、INPUT構造体、KEYBDINPUT構造体を使おうとしたのですが
ビルドかけると「定義されてません」とコンパイラに怒られます
windows.hはstdafx.h内でインクルードしてあり、stdafx.hもちゃんとインクルードしてます
_WIN32_WINNTの値も問題なく、#ifディレクティブの条件にも合ってます
特に定義がスキップされる要素は無いのになぜ定義されてないと出るのかサッパリわかりません・・・

何か、原因とか手がかりとかわかる方いらっしゃいませんか

698 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 10:39:38 ]
NOUSER定義してました、とかなら殴る。
問題無いと言っている_WIN32_WINNTの値は、具体的には何だ?
stdafx.hをupした方が早いかもしれんな。
あと、とりあえずVCのバージョンは書いとけ。

699 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 10:56:52 ]
_WIN32_WINNTだけではなくWINVERも指定しておけよ。

700 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 11:28:21 ]
バージョンはVC++7.0です
_WIN32_WINNTは0x0500となってました
(winuser.hのSendInput周辺を囲ってる#ifは_WIN32_WINNT > 0x0400でした)
WINVERの方は覚えてないです・・・

701 名前:デフォルトの名無しさん [2007/03/07(水) 17:59:19 ]
質問があります。

VS.NET 2003 VC++ の環境で、
フォームにラベルを配置し、ラベルのMouseMoveイベントに以下のコードを書きました。

  // ボタン押下しっぱなしであれば移動
  if(e->Button == MouseButtons::Left) {
    label_sp->Location.X = e->X;
    label_sp->Location.Y = e->Y;
    label_sp->Invalidate();
  }

私は、このラベルをマウスでドラッグできることを予測して
このコードを書きました。

ところが、ラベルはぴくりとも動いてくれません。
なぜなのでしょうか?

702 名前:701 mailto:sage [2007/03/07(水) 18:48:08 ]
自己解決しました…。
以下に解決に至ったコードを書きます。

  // ボタン押下していれば移動
  if(e->Button == MouseButtons::Left) {
   int X = Form1::MousePosition.X - Form1::Location.X
   int Y = Form1::MousePosition.Y - Form1::Location.Y
   label_sp->Location = Point(X, Y);
  }

多少ズレはありますがこのようにやってみます。
スレ汚しすみません。

703 名前:デフォルトの名無しさん [2007/03/07(水) 18:56:45 ]
localtime関数はマルチスレッドで使う場合
スレッドセーフではないと聞きました
VC++2002ですが解決策を教えてください

704 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:01:54 ]
>>703
マルチスレッドは良くない。



705 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:02:36 ]
マルチかよ

706 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:03:16 ]
>>702
label_sp->Location = Point(X, Y); // ここ重要
Location.Xは、返された一時オブジェクトに対しての操作なので、
ラベルには反映されなかった。

707 名前:702 mailto:sage [2007/03/07(水) 19:27:56 ]
>>706
あ、いえ、あれで実際動いてますよ?
ラベルのドラックができてます。
まだ、マウスカーソルのサイズ分のズレがありますが、それは調整中です。

回答ありがとうございます。

708 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:31:11 ]
>>703
スレッドセーフでないものをスレッドセーフにするには、
ラップすれば良いと何かの本で…
私ごときでは具体例は出せませんが

709 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 19:52:02 ]
>>703
VC++2002がどんな設定だったか覚えていないが
設定でマルチスレッド対応のランタイムライブラリを選べばOK。
(推測)

それとスレッドの作成に
Win32APIのCreateThreadではなく
C言語用かMFC用のを使えばいいんじゃない。

710 名前:706 mailto:sage [2007/03/07(水) 20:04:20 ]
>>707
>>701が動かない理由な。判りにくくてすまそ。

711 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 20:07:53 ]
>>703
マルチってほんとに便利ですね。いらないスレッドはポイですよ。

【初心者歓迎】C/C++室 Ver.35【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1171888583/331


712 名前:デフォルトの名無しさん [2007/03/08(木) 10:59:55 ]
質問に合うスレッドに書き換えただけですがなにか?

713 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:17:00 ]
そもそも、何でスレッドセーフではないのか?
を考えたことあるか?

714 名前:デフォルトの名無しさん [2007/03/08(木) 11:58:24 ]
内部の静的な領域を使い回しするからですよね



715 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:16:21 ]
「〜ですけど、何か?」ってすっかり一般的になってるなw

もともとこの言い回し、WhiteAlbumってゲームに出てきたジャーマネの口癖を
パクッたやつだって知ってるヤツはあまりいまい…


716 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 13:35:25 ]
数年前にはやった

717 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:00:28 ]
6年来の葉鍵板住人だけど初耳だった

718 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:04:21 ]
>>717
だったら「〜ですが何か?PART.XX」ってスレ、何度も目撃してるはずだが…
たしか名前は弥生さんだった
スレ違いスマソ

719 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:49:01 ]
C++で委譲しまくってたら処理を振り分ける部分が恐ろしく複雑で忙しそうになってしまった
最初のうちは入門書に載ってるみたいに色んな機能を併せ持った奴作っていくようにした方がいいんでしょうか?

720 名前:デフォルトの名無しさん [2007/03/08(木) 22:56:09 ]
教えてください。
VC .NET 2003 でMFCを使ってプログラムを使うと、他の2003、2000の
環境で「MFC70.DLLがない」というエラーで実行できませんでした。

DLLを入れれば動くのは分かりますが、VCのコンパイルオプションなどで
通常の2000などの環境でも動くように出来ないのでしょうか?
「プロパティ-全般-MFCの使用」でスタティックにすれば実行できましたが、
スタティックにしたために実行ファイルのサイズが大きくなり格好が悪いです。

もっとスマートな方法はないでしょうか?

721 名前:720 mailto:sage [2007/03/08(木) 22:56:50 ]
> VC .NET 2003 でMFCを使ってプログラムを使うと
VC .NET 2003 でMFCを使ってプログラムを作ると


の間違いでした。

722 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:16:42 ]
寝言?

723 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:56:13 ]
実行ファイルが数MBあったところで、ガタガタ抜かす奴は今時いないから気にするな。

724 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:00:24 ]
>>720
EXEにMFC70.DLLを同梱
スタティックリンク
MFCを使わない

さあどれでも好きなものを選べ。



725 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:04:10 ]
ネットで配布されてるフリーのライブラリを複数併用してると
実行ファイルが凄いことになるよな
併用できるように(試行錯誤で)改造することは出来ても不要なコンポーネントを削ることまでは出来ないから
結局10MbytesのExeとかになっちゃう
そんなのでも一から自分で組むよりはパフォーマンスが良いって言うのが悲しいというか情けないところなんだけど・・・orz

726 名前:720 mailto:sage [2007/03/09(金) 00:04:15 ]
.NETでMFCを使う以上、仕方がないということですね。
ありがとうございました。

727 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:19:34 ]
>>725
ならんよ。デバッグのままなんじゃないのか

728 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:54:28 ]
10Mのexeはすごいなぁw
どんだけ超大作なんだろうか

729 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 15:35:37 ]
10MBの実行コードってソースコードにしてどのぐらいだろうね
きっと、いろんな人のコードがいっぱい詰まってるんだね

730 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:57:12 ]
Perlのコードがそのまリテラルとして入ってるんだろ。

731 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:51:17 ]
要らん.lib削ったら5分の1になりますた
ライブラリの機能実験のため一杯詰め込んでたの忘れてましたすいません><

732 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 13:24:53 ]
質問です。

複数のコントロールをcreateで作成するときに、
リソースIDを割り当てることに困っているのですが、
割り当てようとしているID値が他で使われていないか、
または使われていないID値を返すような関数はありますでしょうか?

よろしくお願いします。

733 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:29:04 ]
自分で管理してないと使いものにならないと思うんだが気のせいか?
使う予定がないんだったら全部staticにしとけばいいし

734 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:25:05 ]
>>732
VC2005ならリソースを選択した状態で編集メニューのリソースシンボル。
新規作成で追加し、そのIDを使うようにすれば管理は多少楽かも。
でも使い勝手は良くないな...



735 名前:658 mailto:sage [2007/03/10(土) 20:10:15 ]
pc11.2ch.net/test/read.cgi/tech/1162913156/268-280
というやりとりを経て戻ってきました。
&BitmapInfo.bmiHeaderの値がおかしい気がするんですが・・・。

736 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:30:23 ]
1. もう一度最初から組みなおす
2. デバッガを上手く使う
3. 諦める

少なからず、デバッガについて機能を調べ上手に利用して
原因を特定していくとかいう根性がないようであれば、
VCとは相性が悪かったと思って別の言語に移った方がいい。
VC(というか、C/C++)は結構面倒だ。

Visual Studio でのデバッグ
msdn2.microsoft.com/ja-jp/library/sc65sadd(VS.80).aspx

C# なんかメモリなんかあんまり考えなくて済むから割とオススメだぞ。

737 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:39:09 ]
実は付近のメモリ破壊していて
そのとばっちりを受けている場合は直すの大変だよね。
まず原因を探すのが大変。


738 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:41:04 ]
>>736
C#使いたいんですがXtraがC++しか対応してないんですよ。orz

739 名前:658 mailto:sage [2007/03/10(土) 20:49:45 ]
あと、デバッガ使えるなら使ってるんですよ。
いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz

740 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:57:54 ]
> いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz 
良く解らんけど、何故に VC のデバッガが利用できない?
プラグインとして動作するしかないからか?

もしそれならデバッガのアタッチ機能を使え。プロセスに侵入するんだ。
(とはいえ、Mcromedia製の云々っぽいからデバッガに関連する何かはありそうだが…)


それと、デバッガの機能としての
「特定のメモリアドレスにアクセスした場合にブレーク」
も併用するとよいと思うぞ。

741 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 02:19:13 ]
createで作ったStatic Controに画像(jpg)を表示する処理を入れたのですが、
ソース上では先にcreateしているのに、
実行時には「画像描画」→「createしたStatic Controlの表示」の順になっているためか、
画像の上にstaticがでてしまいます。
どうにかならないでしょうか・・・よろしくお願いします。


742 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 08:31:18 ]
Staticつかう意味があるんだろうか?

743 名前:741 mailto:sage [2007/03/11(日) 08:53:50 ]
>>742
当方、Staticじゃないと表示させられないという認識でおりました。
他のコントロールでも表示できるのであればそちらでよいと思ってます・・・

744 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:24:02 ]
staticが表示するのと別のものを自分で表示するんだったら
static使う意味がないんじゃないかということ



745 名前:743 mailto:sage [2007/03/11(日) 09:43:50 ]
>>744
説明がちょっとわかりづらくなっていました。すみません・・・

Static Controlの枠の上にjpgを乗せるということをやりたかったんですが、
どういうわけか画像がStatic Controlの下に隠れてしまうんです。。。

Static Controlの属性が悪いのかなあ・・・

746 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:21:22 ]
Static Controlのウィンドウスタイルだろ
オレもSTATIC並べて枠と座標だけ利用することはたまにやる

747 名前:743 mailto:sage [2007/03/11(日) 11:26:02 ]
>>746
回答ありがとうございます。
そのときのStatic Controlのウィンドウスタイルは
どのようになっていますでしょうか?
私は
SS_BITMAP | SS_WHITERECT | WS_BORDER | WS_VISIBLE
でやっているのですが、なにか足りないものがあるでしょうか・・・
よろしくお願いします。

748 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:14:23 ]
ビットマップも表示するんだ

749 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:17:05 ]
SS_BITMAPは自分で中も描いちゃうから消えるだろ

750 名前:743 mailto:sage [2007/03/11(日) 12:48:39 ]
>>748-749
SS_BITMAPを消してみましたがまだ駄目みたいです・・・
泣きそう・・・

751 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:07:36 ]
SS_WHITERECT も中を描画するだろw
枠だけとかあるだろ

752 名前:743 mailto:sage [2007/03/11(日) 14:00:30 ]
>>751
SS_WHITERECTを消して、
SetBkModeでTRASPARENTにしてみても変わらないです。。。


753 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 14:07:00 ]
SS_WHITEFRAMEとかSS_BLACKFRAMEとかあるだろう

754 名前:743 mailto:sage [2007/03/11(日) 14:18:25 ]
>>753
GODと呼ばせてください・・・ できました・・・
今日中に作成しないといけないものだったので、
昨日から胃が痛くてしょうがない状態でした。
ありがとう、本当にありがとうございました!



755 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 18:36:23 ]
「胃が痛くてしょうがない状態」
あああ…。悲しいなそれは。

756 名前:デフォルトの名無しさん [2007/03/15(木) 15:56:25 ]
質問があります。

MS VC++.NET 2003 なのですが、以下のソースで三角を描画しました。

Pen * pen = new Pen(Color::Black);
Point poly[] = { p1, p2, p3 };
g->DrawPolygon(pen, poly);

これは成功しました。
今度はこれを塗りつぶしたいのですが、どうすれば良いのでしょうか?
ここでのBrushの使い方がいまいち分かりません。
よろしくお願いします。

757 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:18:34 ]
FillPolygon

758 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:20:18 ]
中を塗り潰すのはFill〜と命名されている。
FillPolygonはDrawでPenを引数に取っていた代わりにBrushを引数に取る。
単色に塗り潰すブラシはBrushの派生の1つSolidBrush、ほかにも何種類かブラシがある。
だから結局こうなる。
Brush* brush = new Brush(Color::Black);
Point poly[] = {p1, p2, p3};
g->FillPolygon(brush, poly);


759 名前:デフォルトの名無しさん [2007/03/15(木) 17:03:50 ]
w= *((ULONG *)( &iv->rbuf[iv->rbufq] ));

既設のvc++のソースを調査しています。
上記、処理の実行結果(w)には何が設定されるかわかりません。
*((ULONG *) ってどういう意味ですか?
ご存知の方、ご教授願います。


760 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:05:36 ]
unsigned long のポインタにキャストして、そのアドレスが指してる値を取り出してる

761 名前:デフォルトの名無しさん [2007/03/15(木) 17:09:22 ]
>>760 ご教授に感謝

762 名前:デフォルトの名無しさん [2007/03/15(木) 19:05:02 ]
テキストファイルのダンプ(16進)を表示したい。VC++のツールにありますか?
・メモ帳でunicode形式で保存したファイルを CStdioFile::ReadString()した時
 意図しない動作をするので unicode形式のファイルの中身をコードで確認したい

Visual C++ standard editionです。
ヘルプで検索するとデバッグ時のメモリダンプばかりヒットしてしまいます。
よろしくお願いします。

763 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:08:56 ]
vectorあたりでバイナリファイルエディタ探すのが早いんじゃ

764 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:13:42 ]
>>762
どのバージョンかわからんのであれだが、
ファイルメニュー - 開く - ファイル で出たダイアログで
ファイルを選択し、開くボタンの右の矢印を押して
ファイルを開くアプリケーションの選択からバイナリエディタを選べばいける

バージョンによって開き方が違うかも



765 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:23:39 ]
>>764
VC++2005 でバイナリエディタ開けました! ありがとうございます。

>>763
レス d。

766 名前:658 mailto:sage [2007/03/21(水) 14:10:17 ]
向こうでも書きましたが、動きますた。
ご迷惑をおかけしました。

迷惑ついでにもうひとつ質問が。
コンパイル時にLNK 4006のwarningが大量発生するのです。
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IRegFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _CLSID_FilgraphManager は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IQueueCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IDeferredCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
といった感じのが1000近く出ます。
動くので問題はないんですが、コンパイル時にウザいので解決したいなーと思った次第です。
どなたか解決方法をご存知の方はいらっしゃいますでしょうか?

767 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:53:35 ]
#pragma warning(disable: 4006)

768 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:58:28 ]
リンクのワーニングにそれ使えるの?

>>766
リンク指定してるライブラリを調べてみて。重複してないか?

769 名前:658 mailto:sage [2007/03/21(水) 15:09:23 ]
>>767
効かないようです。

>>768
winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib strmbasd.lib
以上がリンクしているライブラリですね。

770 名前:658 mailto:sage [2007/03/21(水) 15:26:06 ]
ついでに書くと、strmbasd.libとstrmbase.libをプロジェクトのディレクトリにコピーして使ってます。
それがまずいんでしょうか?

771 名前:658 mailto:sage [2007/03/21(水) 15:45:25 ]
strmbase.libがResource Filesに入っていたので外しました。
数が700くらいまで減りましたがまだ大量に発生中です。

www.users.gr.jp/blogs/hidori/archive/2005/02/14/8990.aspx
これズバリだと思ってこのとおりに試してもダメでした。
リンク先のmsdnサイトのやり方も試してみましたがダメです。orz.......

772 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 16:34:06 ]
>>769
それはデフォルトライブラリの使用をありにしたうえで別に指定しているのか?

773 名前:658 [2007/03/21(水) 16:43:51 ]
>>772
今出先なんで確認できないんですが、多分デフォルトありにしてます。
帰ったら早速調べてみます。

774 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:02:25 ]
>> 658
> 向こうでも書きましたが、動きますた
原因と問題解決方法と書いておけ。
将来的に同じような所で躓くヤツも居るだろう。




775 名前:658 mailto:sage [2007/03/21(水) 18:13:52 ]
>>772
「デフォルトライブラリをすべて無視」にチェック入れても同じ状態(というかリンクエラーが追加される)ですた。

>>774
原因:DVSD形式でデータが流れてくるためDIB形式に変換しようとしたら失敗する。
対処:
AM_MEDIA_TYPE amt;
ZeroMemory(&amt, sizeof(AM_MEDIA_TYPE));
amt.majortype = MEDIATYPE_Video;
amt.subtype = MEDIASUBTYPE_RGB24;
amt.formattype = FORMAT_VideoInfo;
pGrab -> SetMediaType( &amt );
といった感じで一度RGB24形式に指定してあげた後
pGrab -> GetConnectedMediaType( &amt );
で再度取得する。
というかリンク先のソースをコピペでも動くます。
ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html

CopyMemoryで落ちるとか、ヘッダに書くと動かないってのは謎のままです。orz

776 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:43:00 ]
まとめ
拾って来たソース適当にコピペしたら動きました。
でもワーニング出まくりです。

777 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:52:44 ]
たしか、#defineの具合によって、UUIDが実体化されることがあったはず。
だから、どこでも#defineせずにlibを含めるか、どこか1つの翻訳単位で
実体化させて、UUIDの含まれたlibはリンクしないか、どちから。

778 名前:658 mailto:sage [2007/03/21(水) 20:27:07 ]
>>776
まあそれで正解です。w

>>777
ちょっと時間ないんで明日にでも試してみます。
777オメ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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