ウィンドウの手前化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
だんごさん
記事: 273
登録日時: 14年前

ウィンドウの手前化

#1

投稿記事 by だんごさん » 14年前

DxLibの機能でウィンドウを常に手前に表示することができるかとどうかということで質問させていただきました。
検索しても当たり所が悪く目的の結果が返ってきませんでした。
また常に手前に表示するという関数があったとして、それがDxLibが初期化された後でも何度でも変更できるのでしょうか?
よろしくお願いしますm(__)m
 Dango San

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ウィンドウの手前化

#2

投稿記事 by softya(ソフト屋) » 14年前

DXライブラリのウィンドウハンドルを使えばWin32APIで手前にすることが出来ます。
extern HWND GetMainWindowHandle( void ) ; ← ハンドルを得る。

で手前にするのがSetWindowPos()関数でHWND_TOPMOSTにしましょう。

参考。移動せず、サイズも変えず、TOPMOSTにだけする。
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

[補足]
解除はHWND_NOTOPMOSTです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

だんごさん
記事: 273
登録日時: 14年前

Re: ウィンドウの手前化

#3

投稿記事 by だんごさん » 14年前

その関数を使用してみることにしましたが、ウィンドウハンドルを得なければならないのでFindWindow関数で習得しようとしました。Winに触れたことが少ない身ですのでネットで色々探しましたが、FindWindowの引数の第二引数にそのウィンドウの名前を入力しますよね?それって、DxLib側で名前を指定していなけば”DxLib”で、指定していて”テスト”だったらFindWindowにも”テスト”と入れるだけで感知してくれるのでしょうか?それともそこは別の名前が入るのでしょうか?
第一引数はNULLでも問題ないですか?試してみましたが手前に表示されず困っています。エラーは出ません。
 Dango San

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ウィンドウの手前化

#4

投稿記事 by softya(ソフト屋) » 14年前

だんごさん さんが書きました:その関数を使用してみることにしましたが、ウィンドウハンドルを得なければならないのでFindWindow関数で習得しようとしました。Winに触れたことが少ない身ですのでネットで色々探しましたが、FindWindowの引数の第二引数にそのウィンドウの名前を入力しますよね?それって、DxLib側で名前を指定していなけば”DxLib”で、指定していて”テスト”だったらFindWindowにも”テスト”と入れるだけで感知してくれるのでしょうか?それともそこは別の名前が入るのでしょうか?
第一引数はNULLでも問題ないですか?試してみましたが手前に表示されず困っています。エラーは出ません。
ごめんなさい。FindWindow()が出てくる意味がわかりません。
GetMainWindowHandle()でダメな理由を教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

だんごさん
記事: 273
登録日時: 14年前

Re: ウィンドウの手前化

#5

投稿記事 by だんごさん » 14年前

ごめんなさい、勘違いしていました;;
もう一度試してみます・・・
 Dango San

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: ウィンドウの手前化

#6

投稿記事 by naohiro19 » 14年前

だんごさん さんが書きました:ごめんなさい、勘違いしていました;;
もう一度試してみます・・・
答えになっていません。

だんごさん
記事: 273
登録日時: 14年前

Re: ウィンドウの手前化

#7

投稿記事 by だんごさん » 14年前

naohiro19 さんが書きました:答えになっていません。
これはsoftyaさんの解答に対して、私の勘違いというか見落としていたので、再度正しい(softyaさんの解答の)方法で試してみますね、という意味であり答えていたわけではございません。あやふやな返信をしてしまい申し訳ございませんでした。

現在、オーバーロード~~というエラーが出ているので、自己解決を目指しているところでございます。もし自己解決が難しそうであれば、再度質問させていただきます。
 Dango San

だんごさん
記事: 273
登録日時: 14年前

Re: ウィンドウの手前化

#8

投稿記事 by だんごさん » 14年前

自己解決しました。
softya(ソフト屋) さんが書きました:DXライブラリのウィンドウハンドルを使えばWin32APIで手前にすることが出来ます。extern HWND GetMainWindowHandle( void ) ; ← ハンドルを得る。で手前にするのがSetWindowPos()関数でHWND_TOPMOSTにしましょう。参考。移動せず、サイズも変えず、TOPMOSTにだけする。SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);[補足]解除はHWND_NOTOPMOSTです。
を参考にプログラムを組み、無事手前に表示させることができました。
お騒がせしてすみませんでした。
 Dango San

閉鎖

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