DirectXでデスクトップの画像の取得方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
スー

DirectXでデスクトップの画像の取得方法

#1

投稿記事 by スー » 15年前

こんばんわスーです。
いまDirectXとWindowsAPIを使ってスクリーンセーバーを作っています。

デスクトップの画像を表示しながら、何かをする予定です。
イメージとしてはVISTAにインストールされているバブルのスクリーンセーバーです。

それでデスクトップの画像を取得する時点で苦戦しています。
WindowsAPIではデスクトップ画像を取得することはできました。
//デスクトップの画面を取得する関数
//取得したHDCが戻り値
HDC GetDeskTop(){
	HDC Deskhdc;
	HBITMAP DeskBmp;
	HDC DeskBmphdc;

	Deskhdc = CreateDCA("DISPLAY",NULL,NULL,NULL);
	DeskBmp = CreateCompatibleBitmap(Deskhdc,wx,wy);
	DeskBmphdc = CreateCompatibleDC(Deskhdc);
	SelectObject(DeskBmphdc, DeskBmp);

	ReleaseDC(NULL,Deskhdc);
	DeleteObject(DeskBmp);
	return DeskBmphdc;
}
これで取得したHDCを、LPDIRECT3DTEXTURE9などのDirectXで使えるように変換する方法はありますか?
もしくは、DirectXの関数でデスクトップの画像を取得する関数はありますか?

皆様、どうぞよろしくお願いします。

使用環境
WindowsXP
VC++2005
DirectX SDK(March 2008)

DVDM

Re:DirectXでデスクトップの画像の取得方法

#2

投稿記事 by DVDM » 15年前

>>スーさん
[color=gray>>これで取得したHDCを、LPDIRECT3DTEXTURE9などのDirectXで使えるように変換する方法はありますか?[/color]
デスクトップの画像をテクスチャとしてDirectXで使うという認識でいいのでしょうか・・・。
といっても、DirectXはそこまで詳しくないので変換する関数があるかどうかは解りません。


デスクトップの画像が取得出来たのであれば、その画像を一度ビットマップ等で書き出し、
それをD3DXCreateTextureFromFileEx等で読み込んでみてはいかがでしょうか。
D3DXCreateTextureFromFileExの最後の引数がLPDIRECT3DTEXTURE9型なので読み込んでこれそうな感じです。

スー

Re:DirectXでデスクトップの画像の取得方法

#3

投稿記事 by スー » 15年前

DVDMさんレスありがとうございます。

確かに、ビットマップで保存して、それをDirectXで読み込めばできそうですね。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る