自動的にデバイス情報取得→コンボボックスへ

[戻る]
あさひ 2002/11/20(水) 20:21:31
こんにちわ。
VC++は、超初心者です。

ビデオキャプチャソフトを作成したいと思っています。
Directshowでサンプルを見ながら、キャプチャはできたのですが、
ユーザーインタフェースが未完成です。
そこで、PCに接続済みのカメラ(キャプチャデバイス)だけをコンボボックスに
表示させ、選択できるようにするにはどうしたらいいのでしょうか?
そして、選択されたカメラからのデータを、ピクチャか他のダイアログボックスに表示
させたいのです・・・

アドバイスお願いします。

ボコノン教徒 [E-Mail] 2002/11/21(木) 09:22:42
デバイスの列挙を行いたければ、
DirectX 8.0 の日本語ヘルプで「CLSID_VideoInputDeviceCategory」
をキーにして「検索」してみてください。
サンプルでは、「dvapp」あたりをベースにしてみれば?
DV_InitControls()でToolBarにコンボボックスを追加で貼り付ければ
いいと思います。

あやや 2002/11/25(月) 19:46:24
お返事ありがとうございます。
Directshowの日本語ヘルプってあったのですか???
少し難しい言葉がでてきて、混乱状態です。申し訳ありません。

>DV_InitControls()でToolBarにコンボボックスを追加で貼り付ければ
いいと思います

についてがよくわからないのですが・・・
ご解説いただけるでしょうか?

ボコノン教徒 [E-Mail] 2002/11/26(火) 09:45:23
> Directshowの日本語ヘルプってあったのですか???

DirectX 8.0 日本語ドキュメント ( C++ 開発者向け) 
(VB用もあります。切れている文字をつなげてください)

http://www.microsoft.com/downloads/release.asp?
ReleaseID=26072&area=search&ordinal=2

この中に、DirectShowのチュートリアル諸々があります。
これがあるので、すごく助かっています。日本語ドキュメントの
充実が普及のかぎですね、やっぱり。(.Net SDKも全部日本語化せい)

> >DV_InitControls()でToolBarにコンボボックスを追加で貼り付ければ
> >いいと思います
> についてがよくわからないのですが・・・

http://www.microsoft.com/japan/msdn/directx/default.asp
から、DirectXのSDKをダウンロードしてください。私が挙げたサンプルは

\samples\multimedia\directshow\capture\dvapp

にあります。
dvapp.cppの中の関数DV_InitControls()の中で、ToolBarに
チェックボックスやテキストを貼り付けているのでここで
コンボボックスを貼り付ければ外見は完成じゃないですか。
  HWND cmbbox = CreateWindow(TEXT("COMBOBOX"),...);
という感じで。
MFCやSDKについてご存知なければ、もうちょ苦労
していただくことになると思いますが。

あさひ 2002/11/26(火) 10:32:15
ありがとうございます。
MFCやSDKについての知識はまだまだ浅いのですが、マイクロソフトのページとボコノン
教徒さんに教えていただいたもので、できそうです(^^)
初心者に対して、とても親切でわかりやすいお返事をくださり、ありがとうございまし
た。

あさひ 2002/11/26(火) 11:00:41
あの、大変申し訳ないのですが、
サンプルをビルドしてみたところ、

LINK : fatal error LNK1104: ファイル "..\..\baseclasses\debug\strmbasd.lib" を開け
ません。

というようなエラーがでました。
strmbasd.libをプロジェクト->設定のリンクに貼り付けてビルドしてもみたのですが、
解決されません。
どうしてでしょうか?

ボコノン教徒 2002/11/26(火) 11:15:52
> LINK : fatal error LNK1104: 
> ファイル"..\..\baseclasses\debug\strmbasd.lib" 
> を開けません。

「プロジェクト」ー「設定」ー「リンク」ー「インプット」
で strmbasd.lib が相対パスで指定されています。

DirectXのサンプルはライブラリやインクルードで
このような相対パスをよく使うので注意が必要です。
私も苦労しまた。

あさひ 2002/11/26(火) 12:24:51
本当でした!!
インプットを絶対パスで書き直すとエラーがとれました。
ありがとうございます!!
けれど・・・また今度は違うエラーが・・・?

>LINK : fatal error LNK1104: ファイル "D:\Microsoft.obj" を開けません。
>link.exe の実行エラー

しかし、"D:\Microsoft.obj" というファイルなんて存在していませんでした。
これは何のためのファイルなのでしょうか?
どこかから、探してダウンロードしなければならないものなのでしょうか?

ボコノン教徒 2002/11/26(火) 13:11:30
>LINK : fatal error LNK1104: ファイル "D:\Microsoft.obj" を開けません。
>link.exe の実行エラー

これらしいです

http://codeguru.earthweb.com/mfc/comments/22874.shtml
http://codeguru.earthweb.com/mfc/comments/37139.shtml

私も始めて知りました。
プロジェクトをコピーせずにオリジナルの位置でビルドすれば
OKみたいですが。

ボコノン教徒 2002/11/26(火) 14:02:16
よくよく読んだら、きっとこっち

http://codeguru.earthweb.com/mfc/comments/34078.shtml

ですね。

あさひ 2002/11/26(火) 18:29:45
んん・・?
これは、プロジェクト->設定のリンク内の”Microsoft”を”Mixrosoft_SDK”に書き換
えるのではないのですよね?

>プロジェクトをコピーせずにオリジナルの位置でビルドすれば
>OKみたいですが。

とは、どうすることなのでしょうか?
・・・本当にわからなくてすみません。

ボコノン教徒 2002/11/27(水) 09:18:40
>プロジェクトをコピーせずにオリジナルの位置でビルドすれば
>OKみたいですが。

SDKのサンプルディレクトリを別の位置にコピーしてBuildしてい
るのですか?
コピーせずに、解凍したサンプルのプロジェクトをそのまま
VCに取り込んでBuildするとどうなりますか?

RAPT 2002/11/27(水) 11:29:43
こんにちは、RAPTです。

> これは、プロジェクト->設定のリンク内の”Microsoft”を”Mixrosoft_SDK”に書き換
> えるのではないのですよね?
これは、エクスプローラ等で、直接、"Microsoft SDK"というフォルダ名を、
"Microsoft_SDK"に変更し、VC++のインクルード設定等の "Microsoft SDK"
もすべて"Microsoft_SDK"に変更しなさい、という意味です。

Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0

あさひ 2002/11/28(木) 11:17:03
こんにちわ。

直接、"Microsoft SDK"というフォルダ名はなかったので、Microsoft Visual Studioに
アンダーバーを入れてみたり、"MicrosoftSDK"というファイルを作成して、ライブラリ
を移してビルドしてみました。

今までのエラーはとれたのですが、

LINK : warning LNK4049: ローカル定義のシンボル "_sprintf" がインポートされました
CDVGraph.obj : error LNK2001: 外部シンボル "_CLSID_CaptureGraphBuilder2" は未解決
です
CDVGraph.obj : error LNK2001: 外部シンボル "_IID_ICaptureGraphBuilder2" は未解決で
す
CDVGraph.obj : error LNK2001: 外部シンボル "_IID_IDVSplitter" は未解決です
CDVGraph.obj : error LNK2001: 外部シンボル "_IID_IIPDVDec" は未解決です
strmbasd.lib(wxdebug.obj) : error LNK2001: 外部シンボル "__imp__strrchr" は未解決
です
Debug/dvapp.exe : fatal error LNK1120: 外部参照 5 が未解決です。

今度は次のようなエラーが出てきます。
現在、必死でエラー原因を探しています。

ボコノン教徒 2002/11/28(木) 13:18:04
日本語へるぷの「DirectShow」-「ファースト ステップ ガイド」-「ビルド環境の設定」
をきちんと読んでください。

> CDVGraph.obj : error LNK2001: 外部シンボル "_IID_IDVSplitter" は未解決です

strmiids.lib が足りません。

プリプロセッサフラグ DEBUGは追加してありますか? (_DEBUGじゃないよ)
まさか、新規にプロジェクトを作成してビルドしているとか。
もしそうなら、VCの初心者にとってそれはちょっと無謀です。

> strmbasd.lib(wxdebug.obj) : error LNK2001: 
> 外部シンボル "__imp__strrchr" は未解決です

まさか、VCのデフォルトライブラリのSTRMBASD.LIBを引いてきてるんじゃ
ないでしょうね。

あさひ 2002/11/28(木) 19:06:41
strmiids.libを追加すると、重複しているというエラーがでてきます。
日本語ヘルプで探せないのですが・・・・
>プリプロセッサフラグ DEBUGは追加してありますか? (_DEBUGじゃないよ)

 これは、何でしょうか? 

>まさか、新規にプロジェクトを作成してビルドしているとか。

 サンプルとして、入っていたdspファイルを開き、ビルドしたのですが、こうではなか
ったのでしょうか?

初心者のわがままにつきあって頂き、大変恐縮です。

古いスレッドには追加発言できません。