CLOSE
PowerBuilder Tips

方法

Windows 11 では、下記の画像のようにウィンドウの四隅が従来の直角から、丸みを帯びた表示へと変更されています。

Windows API の dwmapi.dll に含まれる DwmSetWindowAttribute 関数を利用することで、従来 (Windows 10) の直角表示にすることが可能です。

外部関数定義を定義する

DwmSetWindowAttribute 関数はアプリケーションのタイトルバーなどの、ウィンドウの非クライアント領域のレンダリングに関する設定を行うことができます。
この関数を使用する際は、Microsoft 社のマニュアルをもとに、ウィンドウの [Global External Functions] または [Local External Functions] で定義します。
この関数が含まれる dwmapi.dll は、Windows(C:\Windows\System32) に標準配置されているため、開発にあたって事前のファイル準備などは不要です。

【Global External Functions】

// ==============================================================================
// 外部関数宣言: DwmSetWindowAttribute
// 【概要】ウィンドウのクライアント領域以外の設定値を格納。
// 【引数】
//   - hwnd            : 対象となるウィンドウのハンドル
//   - dwAttribute     : 設定する属性値を含むオブジェクトへのポインター
//   - pvAttribute     : 属性に設定する具体的な値 (データ) のポインター:
//                         1: 直角にする ※ 今回はこの値を使用します。
//                         2: 通常の丸い表示にする
//                         3: 少しだけ丸い表示にする
//   - cbAttribute     : pvAttribute に渡したデータのサイズ (バイト数)
// 【戻り値】
//   - 成功時は 0 (True)、失敗時は 0 以外 (False) を返却する。
// ==============================================================================
Function long DwmSetWindowAttribute (longptr hwnd, long dwAttribute, Ref longptr pvAttribute, long cbAttribute) Library "dwmapi.dll"

DwmSetWindowAttribute 関数の呼び出し

直角表示にしたいウィンドウの Open イベントから、DwmSetWindowAttribute 関数を呼び出します。
なお、各パラメーターの詳細については、Microsoft 社の公式マニュアルをご参照ください。

ウィンドウの Open イベント

// DwmSetWindowAttribute 関数に渡すパラメーター
long ll_dwAttribute = 33
longptr llp_pvAttribute = 1 // ウィンドウの四隅を直角に表示する
long ll_cbAttribute = 4

// DwmSetWindowAttribute 関数を実行
DwmSetWindowAttribute(Handle(this), ll_dwAttribute, llp_pvAttribute, ll_cbAttribute)

動作確認

DwmSetWindowAttribute 関数を実装し、Windows 11 の環境でウィンドウを開くと、下記の画像のようにウィンドウが直角に表示されました。

x instagram facebook youtube