トップページ > 記事閲覧
透過ウィンドウでタイトルバーなどは残したい
名前:toka 日時: 2023/03/25 12:33

透過ウィンドウを作成したいのですが クライアント領域部分だけを透過ウィンドウにしてタイトルバーなどの枠はそのまま残したいです 既存スレッドにありました以下のサンプルプログラムでは ボーダーレスウィンドウのようにタイトルバーなどが消えてしまっているのですが タイトルバーなどは自作する必要があるのでしょうか? 既存スレッドにありましたサンプルプログラム ↓ #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int GrHandle ; int Screen ; int SoftImage ; int AlphaAdd ; int Alpha ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // 透過ウインドウ設定 SetUseBackBufferTransColorFlag( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 描画対象にできるアルファチャンネル付き画面を作成 Screen = MakeScreen( 640, 480, TRUE ) ; // 画面取り込み用のソフトウエア用画像を作成 SoftImage = MakeARGB8ColorSoftImage( 640, 480 ) ; // 画像を読み込む際にアルファ値をRGB値に乗算するように設定する SetUsePremulAlphaConvertLoad( TRUE ) ; // 画像の読み込み GrHandle = LoadGraph( "Test1.bmp" ); // 描画先を描画対象にできるアルファチャンネル付き画面にする SetDrawScreen( Screen ); // メインループ AlphaAdd = -8 ; Alpha = 255 ; while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { // 画面をクリア ClearDrawScreen() ; // アルファ値の変更 Alpha += AlphaAdd ; if( Alpha <= 0 ) { Alpha = 0 ; AlphaAdd = 8 ; } else if( Alpha >= 255 ) { Alpha = 255 ; AlphaAdd = -8 ; } // 描画ブレンドモードを乗算済みアルファにセット SetDrawBlendMode( DX_BLENDMODE_PMA_ALPHA, Alpha ) ; // 画像を描画 DrawGraph( 0, 0, GrHandle, TRUE ) ; // 描画先の画像をソフトイメージに取得する GetDrawScreenSoftImage( 0, 0, 640, 480, SoftImage ) ; // 取り込んだソフトイメージを使用して透過ウインドウの状態を更新する UpdateLayerdWindowForPremultipliedAlphaSoftImage( SoftImage ) ; // 少し待つ Sleep( 12 ) ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ

Page: 1 |

Re: 透過ウィンドウでタイトルバーなどは残したい ( No.1 )
名前:管理人 日時:2023/03/26 00:09

はい、DXライブラリが使用している透過ウィンドウの API はタイトルバー等は残せないタイプの 機能なので、クライアント領域だけ透過させるということができません 申し訳ありませんが、タイトルバーなどは自作をしてください m(_ _;m
メンテ
Re: 透過ウィンドウでタイトルバーなどは残したい ( No.2 )
名前:toka(解決済み) 日時:2023/03/26 01:31

分かりました自作することにします お返事ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存