ウィンドウ(ボタン)を配置するがFlipで上書きされる

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

ウィンドウ(ボタン)を配置するがFlipで上書きされる

#1

投稿記事 by dic » 15年前

自作のDirectXライブラリを使用してます

CreateWindow() 関数でボタンクラスを指定してボタンを作成
表示までできたのですが、DirectX の Flip処理をすると
ボタンが描画された状態のところを上書きしてしまうので
ボタンが見えない状態になってしまいます

どこに配置しているか文字で表してます
ここをクリックすると一瞬ボタンウィンドウが見えるのでうまくいっているようですが
DirectDraw の Flip関数を使うと画面全体を描画するので
どうしてもボタンが消えてしまいます

どのようにしたらボタンが描画されているように見えるのでしょうか?
どのようなものか下に実行ファイルを置いておきます
http://www1.axfc.net/uploader/Sc/so/153278
(送付ファイルと同じものです)
m_hwnd = CreateWindow( "BUTTON", "ゴシック", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        m_x, m_y, 100, 30, hwndApp, (HMENU)100, hInstApp, NULL );
としてボタンを作成してますが その後に呼び出される画面再描画関数
DEF_DXDRAW->Flip( hwndApp );
で上書きしてしまうのです


どうしてもできない場合は独自のボタンクラスを作り
これに文字を描画しようと考えています 画像

シエル

Re:ウィンドウ(ボタン)を配置するがFlipで上書きされる

#2

投稿記事 by シエル » 15年前

エラーが出て動きません。
吐き出されるログもファイルは作成されますが、空っぽです。

dic

Re:ウィンドウ(ボタン)を配置するがFlipで上書きされる

#3

投稿記事 by dic » 15年前

>シエルさん

すいません、送付容量の制限上wavファイルを削ったものを送付してました

下の方はwavファイルが一緒なので動くと思います
http://www1.axfc.net/uploader/Sc/so/153278

シエル

Re:ウィンドウ(ボタン)を配置するがFlipで上書きされる

#4

投稿記事 by シエル » 15年前

実行しましたが、どこにボタンがあるのかわかりませんでしたw

DirectDrawだとちょっと対応方法が分かりませんね。

ちなみに親ウィンドウのウィンドウスタイルにWS_CLIPCHILDRENを追加してみても駄目でしょうか?

御津凪

Re:ウィンドウ(ボタン)を配置するがFlipで上書きされる

#5

投稿記事 by 御津凪 » 15年前

DirectX系の描画は作成時に指定したウインドウハンドルの描画範囲を占有して描画します。
そのため、そのウインドウにコントロールなど(子ウインドウ)があっても、全て丸ごと上書きされます。

これを回避する方法は原則としてありません。
(Flip後に強制的に描画させることはできますが、チラつきますし、CPUの負担が大きくなります)

素直に自作UIを作るなりした方が早いですよ。

dic

Re:ウィンドウ(ボタン)を配置するがFlipで上書きされる

#6

投稿記事 by dic » 15年前

>シエルさん
WS_CLIPCHILDRENをウィンドウ作成時のフラグに追加してもダメみたいでした
クリックするのは左下の文字「戦略」「基地」というところです

>御津凪さん
>これを回避する方法は原則としてありません
やはりそうですか
市販ゲームなども独自のUIを作っているので市販されてるゲームのUIなどを
参考します

助言ありがとうございました

閉鎖

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