ページ 11

DirectX について

Posted: 2010年3月11日(木) 14:55
by カズム
前回は質問に解決できず、申し訳ありません。
kms改め、カズムです。
DirectXについて質問があります。

現在、Visual C++ 2008 Express Editionを起動し、
「ファイル(F)」→「新規作成(N)」→「プロジェクト(P)」→
「Win32」→「Win32プロジェクト」を選び、
「Windows アプリケーション」「空のプロジェクト」にチェックをつけ、
Windows アプリケーションの準備は出来たのですが、
次に、このプロジェクトに、DirectXを導入する方法が解りません。

DirectX SDK Nov08はインストールしてあるのですが、
これをVisual C++ 2008 Express Editionで利用するには、
どのようにすれば良いのでしょうか?

DirectXについては、全くの初心者です。

何方か、DirectXの導入手順を詳しく教えては頂けませんでしょうか?

Windows Vista,
Visual C++ 2008 Express Edition,
DirectX SDK Nov08,

Re:DirectX について

Posted: 2010年3月11日(木) 15:12
by softya
たしかビルボードを質問した人ですよね?
最後に間違っていると指摘しましたが、理解されてちゃんとビルボード出来たのでしょうか?

それはそれとして、解説は古いですがこちらが参考に成ると思います。
Visual C++ 6.0とDirectX8で解説されてますが、そのぐらいの違いを自力で乗り越えられないとこの先になんて到底進めませんので。
http://www.plustarnet.com/aspil/Programming/
当然ながら、DXライブラリよりもプログラムを組む難易度が大幅アップします。
それとC++の文法の理解は、ほぼ必須です。

DirectX9の使い方から色々なプログラミング・テクニックはこちら。
http://marupeke296.com/GameMain.html

画像

最前面表示の仕方

Posted: 2010年3月22日(月) 17:14
by 匿名
前回デスクトップアクセサリの時に背景色を消すと言うことは、成功したのですが、
今度はそれを、最前面に表示したいのですがそのプログラムはどのように指定したらよいのでしょうか?

後もう一つ質問なのですが、そのプログラムをバックグラウンド(?)で動かすにはどうすればいいのでしょうか?
通常デスクトップアクセサリとは、スタートの横に表示されるのではなく、
ハードウェアの取り外しなどが表示されている場所にソフトの起動を示すアイコンが出現すると思うのですが、
そのやり方はどうすればいいのでしょうか?

Re:最前面表示の仕方

Posted: 2010年3月22日(月) 17:40
by softya
前回も書きましたが環境を教えてください。
Win32API、MFC、C++/CLIフォームではやり方が違います。

>ハードウェアの取り外しなどが表示されている場所にソフトの起動を示すアイコンが出現する
通知領域(タスクトレイ)ですね。
通知領域(タスクトレイ)に無闇にアイコンを置くことはWindowsVista/7では非推奨の行為となっています。
Vistaの場合は、アイコンが自動的に隠されます。表示はアイコン更新時とメッセージ通知されるときだけです。
7の場合は更に徹底していて、メッセージ通知される時だけになります(ユーザーがわざわざアイコン表示を選べば表示されますが、1つのソフト毎に設定する必要があります)。
なので非表示時に操作を行いたいのなら、デスクトップマスコット自体に操作メニューを搭載して下さい。

アイコンを表示しないのであれば、メインウィンドウを非表示にするだけでタスクバーからは消すことが出来ます。

Re:最前面表示の仕方

Posted: 2010年3月23日(火) 20:57
by 匿名
環境とはどこを見れば解るのでしょうか?
現在windowsXPのMaicrosoft Visual C++をつかって記述しています。

Re:最前面表示の仕方

Posted: 2010年3月23日(火) 21:10
by softya
>現在windowsXPの Maicrosoft Visual C++をつかって記述しています。
よく分からないのであれば、日ごろ参考にしているサイトやメッセージループの部分の構造を教えてください。

Re:最前面表示の仕方

Posted: 2010年3月25日(木) 15:10
by 匿名
日頃参考にしているサイトはこのサイトになります

Re:最前面表示の仕方

Posted: 2010年3月25日(木) 15:41
by softya
えーと、よく分かりません。
DXライブラリでデスクトップマスコットに使える機能なんてありましたっけ?
管理人さんのサンプルにもなかった気がするんですが・・・。
情報をちゃんと開示してもらわないと、こちらとしては手助け出来ないので詳しくお願いします。

私の知っているのは、Win32API、MFC、 C++/CLIフォームなど直接ウィンドウを制御出来る関数を使ってデスクトップマスコットを作る方法だけです。DXライブラリでの方法は存じません。

DXライブラリの関数リファレンスに書いてある機能なんでしょうか?
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html

Re:最前面表示の仕方

Posted: 2010年3月26日(金) 04:07
by Ma
>DXライブラリでデスクトップマスコットに使える機能なんてありましたっけ?
つい、最近追加された機能です。
ver3.01a の途中から追加されています。

詳細、使い方はこちら。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... o=1616&p=2


正直、私も詳しくありませんが、同じようにデスクトップマスコットを作りました。
で、ちなみに知識もなしにぐぐって無理やり最前面表示させました。

方法は以下のとおりです。

SetWindowPos( GetMainWindowHandle() , HWND_TOPMOST, 0, 0, 300, 300, (SWP_SHOWWINDOW |SWP_NOSIZE) );

HWND_TOPMOST
がみそですな。

なお、この方法では
SetUseBackBufferTransColorFlag(TRUE);
をしている場合、第3引数から第7引数(0 とか 300)は、どんな値を指定してもたいしてウィンドウに変化はありませんでした。

「ただし」、透明化していない状態の場合、ウィンドウの形などがいかれてしまうようです。
DXライブラリで、かつ透明化している場合のみ使える強引な手段かも。。。

あとは詳しい人にまかせ(ry 画像

Re:最前面表示の仕方

Posted: 2010年3月26日(金) 21:36
by 匿名
Maさん補足説明ありがとうございます。
今回DXライブラリで作ろうと思ったのは一番初めに画像を表示するプログラムが簡単に書けるのが、
こちらのサイトだったから、という理由だけなので深い意味わ無いです。

しかしMaさんも書かれていますように最近透明化が出来るようになっており、その機能を使うと綺麗に、画像のみを表示することが出来たので、これを使用しデスクトップアクセサリを作ろうと思ったわけです。

しかし、私のPCでは画像を表示させただけでCPU使用率が20%ほど上昇したので出来ればもっと、
軽いプログラムにしたいと思っています

デスクトップ内をうろうろさせるものを作りたいのですがなにで作るのがいいのでしょうか?

Re:最前面表示の仕方

Posted: 2010年3月27日(土) 09:49
by Ma
>デスクトップ内をうろうろさせるものを作りたいのですがなにで作るのがいいのでしょうか?
DXライブラリじゃないなら、WinAPIでしょうかね。一番はやそうなイメージがw
ただし、推測ですのであてにしないでください。

あと、CPU使用率をさげるなら、スリープ関数で休ませてfpsを意図的に下げるのも手ですよ。


ここからは、WinAPIで1回だけウィンドウの透明化をしたことがある程度である私の意見です。

DXライブラリでデスクトップマスコットをやるのと同じ事をWinAPIでするなら、コード内容は何十倍から何百倍も難解になるとおもいます。
WinAPIの経験が十分にあるならば、失礼しました。

たとえば、DXライブラリは、アニメーションをしても自動的に描画されたところだけをクロップしてくれますが、WinAPIは自動的にしてくれません。

そもそも透明化する領域を指定しないといけなかったはず。
その場合は、リージョンを毎フレーム更新しないといけないですね。

結論
DXライブラリ以外も試してみるといいとおもいますが、おそらく一番簡単にデスクトップマスコットを作れるのはDXライブラリです。


サンプルは、グーぐる先生に聞いてみるとそこそこヒットしますよ。 画像