2016-04-27 13 views
0

私は自分のウィンドウハンドル(hwnd)からアプリケーションウィンドウをキャプチャし、ウィンドウ全体、トップレベルメニュー、およびスクロールバーをキャプチャするために使用できるGetWindowDCを使用してデバイスコンテキストを取得しています。ウィンドウ、サブメニュー、コンテキストメニューのデバイスコンテキストを取得するにはどうすればよいですか?

HDC hdcWindow = GetWindowDC(hwnd); 
HDC hdcMemDC = CreateCompatibleDC(hdcWindow); // or hdcScreen 

たとえば、メモ帳の左上隅にある[ファイル]メニューでは、そのメニューはキャプチャされません。デバイスコンテキストに含まれていないようです。アプリケーションウィンドウを持つすべてのデバイスコンテキストを取得する方法はありますか?

+1

ディスプレイDC(GetDC(NULL))を取得し、BitBltにウィンドウの矩形 –

+0

@AlexKを取得する必要があります。技術的には、ポップアップメニューはウィンドウの矩形の外側に広がることができます。 –

+0

こんにちはアレックス、それはかなりうまくいきます、ありがとう。 – Anton

答えて

0

GDIによって提示される表示抽象化は、デスクトップ構成によって実行される魔法を認識しません。ウィンドウDCは、ディスプレイ上のウィンドウの領域を表し、ウィンドウが表示されていないか、領域が切り取られて存在しません - ウィンドウDCを使用してそれにblitすることはできません。また、それを読むときにはおそらく黒さがあります。

このように、複数のウィンドウからコンテンツを含む画面の領域をキャプチャするには、ウィンドウではなくDCを使用する必要があります。

+0

この回答は、この質問に示された問題にどのように対処していますか? – IInspectable

関連する問題