トップページ > 過去ログ > 記事閲覧
Windows APIとの併用
名前:優柔不断 日時: 2007/07/02 23:07

描画先が裏画面の時に、ステータスバーや、ボタンコントロールなどを作った時に、それを表示する方法はないのでしょうか。ScreenFlip関数を使うと、見えないか、見えなくなるか、とてもちかちかして見苦しい状態になるので。教えてください。

Page: 1 |

Re: Windows APIとの併用 ( No.1 )
名前:管理人 日時:2007/07/03 11:48

 優柔不断さん始めまして、DXライブラリの管理人です。 ステータスバーやボタンコントロール等の DirectX ではなく GDI を使用して 表示されているものを正常に表示するには DxLib_Init を実行した後に、 以下の関数に TRUE を渡して呼ぶ必要があります。 // GDI描画を使用するかどうかを設定する int SetUseGDIFlag( int Flag );  ただ、GDI と DirectX の相性は良くないので、これを使用しても正常に 表示されるかどうかは分かりません。(- -;
Re: Windows APIとの併用 ( No.2 )
名前:優柔不断 日時:2007/07/03 19:44

相性がよくないとは、どういうことでしょうか。 すいません、こんな質問して、これからのプログ ラミングに生かそうと思いまして。
Re: Windows APIとの併用 ( No.3 )
名前:管理人 日時:2007/07/05 11:38

優柔不断さんどうも、DXライブラリの管理人です。 > 相性がよくないとは、どういうことでしょうか。 DirectX は元々 GDI との共存を前提としていないからです。 (元々描画速度が低速な GDI の解決策として開発した DirectX 上で GDI を 使用しては本末転倒なので、DirectX を使用したプログラムでのメニューの類は 基本的にすべてソフト側での実装が前提となっているのです)
Re: Windows APIとの併用 ( No.4 )
名前:優柔不断 日時:2007/07/05 19:50

やはり、正常に描画されませんでした。ここから思っ たのですが、ある一部分だけをScreenFlipできる方法 があればいいなと思ったのですが、どうでしょうか?
Re: Windows APIとの併用 ( No.5 )
名前:管理人 日時:2007/07/07 12:52

優柔不断さんどうも、DXライブラリの管理人です。 > やはり、正常に描画されませんでした。ここから思っ > たのですが、ある一部分だけをScreenFlipできる方法 > があればいいなと思ったのですが、どうでしょうか?  フルスクリーン時の ScreenFlip は裏画面用のメモリ領域から 画素情報を表画面用のメモリ領域に転送するのではなく、モニタに 出力するメモリ領域を表画面用のメモリ領域から裏画面用のメモリ領域に 変更するということをしているので、一部分だけ、ということは出来ません。  描画速度は遅くなりますが、DxLib_Init を呼び出す前に DirectDraw の 機能を使用するかどうかを設定できる SetUseDirectDrawFlag 関数に FALSE を渡して DirectDraw を使用しないようにすることで正常に表示されるかも しれません。(描画速度は落ちますが・・・) SetUseDirectDrawFlag( FALSE ); if( DxLib_Init() < 0 ) return -1; 尚、こちらの関数は内部処理がちょくちょく変わっていますので、宜しければ こちらの最新版をお使いになってみてください。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: Windows APIとの併用 ( No.6 )
名前:優柔不断 日時:2007/07/07 18:59

やってみましたが、もっとひどい状況になりました。
Re: Windows APIとの併用 ( No.7 )
名前:優柔不断 日時:2007/07/24 23:21

(追伸) 解決いたしました。 思い切ってDxライブラリでボタンを作りました。

Page: 1 |