2011-07-01 9 views
0

私は自分のプロジェクトでWindows SDKで純粋なCを使用していますが、今はドライバがMFC 6.0で作成されたDVRのカメラに対処する必要があります。MFCなしで​​MFCライブラリを使用する

私は(私はすでにいくつかのモジュールでそれを使用しています)いつでもC++に切り替えることができますが、このカメラのSDKには、私はCWndののオブジェクトが必要です。

//Initialize is a function, which initializes the related SDK instance. 
Void Initialize(CWnd* pParent) 

私はMFCプロジェクトにMFCのものをロードせずに、偽のCWndを作成するが、ちょうど私の平野のCreateWindowEx()を使用することはできますか?

ありがとうございます。

+0

ライブラリのソースはありますか?あなたはそれを偽造することができるかもしれません。それが行う唯一のものがCWnd :: m_hWndを取得するか、またはCwnd :: GetSafeHwndを呼び出す場合は、実際のHWNDを返すダミーのCwndクラスを作成できます。しかし、Cwndのメンバー関数のネストされた混乱を使用する場合、あなたはウサギの穴を下っているかもしれません... – CoreyStup

+0

いいえ、私は持っていません。しかし、私はこのライブラリがこのHWNDに関連するスレッド(カメラ用)を作成するためにCwndを使用することを知っています。しかし私は試みることができます!このダミーCWndを作成するにはどうすればいいですか? –

+0

https://openmfc.codeplex.com/を見てください。これはMFCのオープンソース版です。 –

答えて

1

CWndは単にウィンドウハンドルのラッパーです。おそらく、SDK関数が使用しているメソッドのみが親ウィンドウハンドルを取得しています。実際のMFCを使用せずにすべてのデータとメソッドでオブジェクトをモックするためにCWndのすべての継承分岐と依存関係をリッピングしようとするが、それは本当の面倒になると思う。 おそらく、dllのような単純なMFCレイヤーを作成して、コードからHWNDハンドルを取り出し、それをCWndにラップしてから、カメラSDKを呼び出す必要があります。あなたは、あなたが持っている古いライブラリで動作するようにレイヤーを作成するために、おそらく同じバージョンのVC++ 6.0が必要になります。

1

SDKにCWndを受け取る関数がある場合、おそらくMFCと静的にリンクされています。これは、プロジェクトがクライアントマシン上のMFC dllに依存していることを意味します。あなたは今MFCに結びついているので、弾丸を噛んで、MFCに静的にリンクされたMFCプロジェクトを作成することもできます。私は単純なコンソールMFCプロジェクトを作成し、そこから作業することをお勧めします。

関連する問題