mcrblog

vcpp-ml

1999年09月

30

[vcpp 00033124] CCDカメラのキャプチャまたはプレビュー中の動画をDIBで取得

こんばんは、高野です。

前回、 "[vcpp 00032726] DirectShowを使ったCCDカメラの
キャプチャ処理"で質問し、あひるさんのお返事よりサンプル
内のDumpフィルタを解析しましたが、その部分について、
わからなかったので、その部分について
質問いたします。

まず、何をしたいかというと、サンプルにあるAmCapに少し
手を加え、表示してある動画の一瞬を写真のようにBitmap
ファイルなどに保存したいと考えています。

そこで、Dumpフィルタを見ると
 CDumpInputPin::Receive(IMediaSample *pSample)
が、使えるんではないかと思いました。
この IMediaSample インターフェースから DIB のデータが
取れそうなのはわかったのですが、IMediaSampleをどうやって
取得すればよいのかわかりません。

推測でもかまわないので、何か情報をください。

よろしくお願い致します。

///////////////////////////////////////////
//
// 高野 徳満
//     Norimitsu Takano
//
//  e-mail : t...@fat.coara.or.jp
//
///////////////////////////////////////////
30

[vcpp 00033123] Re: ディスプレイアダプタの取得方法

松嶋です。

> EnumDisplayDevicesを使用してディスプレイアダプタの名称は取得できました。
> しかし、DISPLAY_DEVICE構造体は、古い方しか使用出来ずにいます。
> DX6.1SDKを入れているのですが・・・

VC6 と multimon.h は相性が悪いようなので、自分のプログラムでは VC5 を利用
するか、VC6 では次のようにして使っています。

1. ヘッダーファイルなどで適当な名前で新しい DISPLAY_DEVICE を定義

    typedef struct tagMY_DISPLAY_DEVICE
    {
        DWORD  cb;
        CHAR   DeviceName[32];
        CHAR   DeviceString[128];
        DWORD  StateFlags;
        CHAR   DeviceID[128];
        CHAR   DeviceKey[128];
    } MY_DISPLAY_DEVICE;
   // UNICODE版は省略

2. EnumDisplayDevices の呼び出し時に DISPLAY_DEVICE にキャストして使用

    MY_DISPLAY_DEVICE dd;
    dd.cb = sizeof(dd);
    DWORD dwDevNum = 0;
    while (EnumDisplayDevices(NULL, dwDevNum++,
        reinterpret_cast<DISPLAY_DEVICE*>(&dd), 0))
    {
        // 処理
    }

以上

----
松嶋 幸彦 (Yukihiko Matsushima)
m...@gb3.so-net.ne.jp
30

[vcpp 00033122] ファイル選択ダイアログでファイル選択数を取得する方法

みなさん、こんにちは。

たかしま@えひめです。

ファイルを開くダイアログボックス処理時に、ファイルダイアログ用のフック関数内で
OKボタンが押されたときに、現在選択されているファイル数を取得したいのですが
どのようにすれば取得できるかご存じの方おりますでしょうか?

どうかよろしくお願いいたします。


//////////////////////////////////////////////////
  高嶋 徹
  t...@saijo.mke.mei.co.jp
30

[vcpp 00033121] Re: ifstreamのストリームの長さの取得

        Thu, 30 Sep 1999 19:41:13 +0900 の
        [vcpp 00033119] Re: ifstream のストリームの長さの取得
        の発言に関してですが.....

》》ifstreamにおいて現在位置からストリームの最後までの長さを知りたいのですが、
》》どのようにすればよいのでしょう?
》》
》》ファイル全体の長さから現在位置を引けばいいかとも思ったのですが、ifstream
》》からそのファイルのサイズを取得する方法もわかりません。
》seekgしてからtellgかしら、試してませんが。
》あ、現在位置からなら、tellgだけかな。(^^ゞ
すいません意味不明でしたね。
現在位置を保存して(tellg)最後に移動して(seekg)
で先の位置と、最後の位置(tellg)との差を取れば
OK、であとは、現在位置に戻る(seekg)
------------------------------------------------------------
all the time with a smile
いつも笑顔で ahirugao がー >^
mailto:a...@gao.hot.co.jp
http://ahirugao.i.am/
30

[vcpp 00033120] Re: [vcpp 00033112] Re: レジストリの値の名前

宮崎です。

>石河@DSKです。
>Subject: [vcpp 00033109] レジストリの値の名前
>うーん、どのようにRegSetValueEx()を使っているのですか?
>第2引数が
>    LPCTSTR lpValueName,
>ですが…

下記のソースです。

int  ToolCeSetReg( char *data )
{
    HKEY hkpro;

    if( RegCreateKey( HKEY_LOCAL_MACHINE,
           "SOFTWARE\\Miyazaki\\Test",
           &hkpro ) != ERROR_SUCCESS ){
           MessageBox( 0, "RegCreateKey", "レジストリ設定異常", MB_OK );
           return( -1 );
     }
   RegSetValueEx( hkpro, "Address", 0, REG_SZ, data, strlen(data) );
   RegCloseKey( hkpro );
   return( 0 );
}
名前をAddressにしたいのですが、これだとディレクトリ?になって
しまいます。
記事検索
Amazon.co.jp
  • ライブドアブログ