Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAllocClassHint(3X11)

XAllocIconSize(3X11)

XAllocWMHints(3X11)

XFree(3X11)

XSetCommand(3X11)

XSetTransientForHint(3X11)

XSetTextProperty(3X11)

XSetWMClientMachine(3X11)

XSetWMColormapWindows(3X11)

XSetWMIconName(3X11)

XSetWMName(3X11)

XSetWMProperties(3X11)

XSetWMProtocols(3X11)

XStringListToTextProperty(3X11)

XAllocSizeHints(3X11)  —  NEWS-OS Programmer’s Manual

名称

XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints − サイズヒント構造体を割り当て、ウィンドウの WM_NORMAL_HINTS 属性を設定または読む

形式

XSizeHints ∗XAllocSizeHints() void XSetWMNormalHints(display, w, hints)
      Display ∗display;
      Window w;
      XSizeHints ∗hints; Status XGetWMNormalHints(display, w, hints_return, supplied_return)
      Display ∗display;
      Window w;
      XSizeHints ∗hints_return;
      long ∗supplied_return; void XSetWMSizeHints(display, w, hints, property)
      Display ∗display;
      Window w;
      XSizeHints ∗hints;
      Atom property; Status XGetWMSizeHints(display, w, hints_return, supplied_return, property)
      Display ∗display;
      Window w;
      XSizeHints ∗hints_return;
      long ∗supplied_return;
      Atom property;

引数

displayX サーバへの接続を指定します。

hints通常時のウィンドウのサイズヒントを指定します。

hintsXSizeHints 構造体を指定します。

hints_return通常時のウィンドウのサイズヒントを返します。

property属性名を指定します。

supplied_return
ユーザから提供されたヒントを返します。

wウィンドウを指定します。

解説

XAllocSizeHints 関数は XSizeHints 構造体へのポインタを割り当て、返します。 なお、 XSizeHints 構造体の全てのフィールドがゼロに初期設定されていること。 メモリに必要な領域が不足する場合、 XAllocSizeHints はナルを返します。 この構造体に割り当てられるメモリを開放するために、 XFree を使います。 XSetWMNormalHints 関数は、 指定したウィンドウ上の WM_NORMAL_HINTS 属性のサイズヒントを交換します。 その属性が存在しない場合、 XSetWMNormalHints は指定ウィンドウ上の WM_NORMAL_HINTS 属性のサイズヒントを設定します。 その属性は、 タイプが WM_SIZE_HINTS、 フォーマットが 32 で格納されます。 XSetWMNormalHints で発生するエラーには、 BadAlloc および BadWindow エラーがあります。 XGetWMNormalHints 関数は、 指定ウィンドウ上の WM_NORMAL_HINTS 属性で格納されたサイズヒントを返します。 もし、 その属性が WM_SIZE_HINTS タイプの 32 フォーマットであり、 旧型(ICCCM 以前)または新型のサイズヒント構造体のどちらかを保持出来る程の長さであれば、 XGetWMNormalHints は XSizeHints 構造体の各フィールドを設定し、 ユーザが提供したフィールド(フィールドに値が定義されているかどうかは別として)のリストへの引数 supplied_return を設定します。 そしてゼロ以外のステータスを返します。 上記以外の場合には、ステータスのゼロを返します。 XGetWMNormalHints が正常に返り、 そして ICCCM 以前のサイズヒント属性が読まれた場合、 引数 supplied_return は下記の様なビット構成となります。

(USPosition|USSize|PPosition|PSize|PMinSize|
PMaxSize|PResizeInc|PAspect)

同様にその属性がベースサイズとウィンドウグラビティーフィールドを保持出来る程大きい場合、 引数 supplied_return も下記の様なビット構成となります。

PBaseSize|PWinGravity

XGetWMNormalHints で発生するエラーには BadWindow エラーがあります。 XSetWMSizeHints 関数は、 指定されたウィンドウの属性のサイズヒントを交換します。 もし、 指定した属性が存在しない場合、 XSetWMSizeHints はウィンドウに指定した属性のサイズヒントを設定します。 その属性は、 WM_SIZE_HINTS タイプの 32 フォーマットで格納されます。 ウィンドウの通常のサイズヒントを設定するためには、 XSetWMNormalHints 関数を使います。 XSetWMSizeHints で発生するエラーには BadAlloc、 BadAtom、 および BadWindow エラーがあります。 XGetWMSizeHints 関数は指定されたウィンドウの属性のサイズヒントを交換します。 もし、 その属性が WM_SIZE_HINTS タイプの 32 フォーマットであり、 旧型(ICCCM 以前)または新型のサイズヒント構造体の内どちらかを保持出来る程の長さであれば、 XGetWMSizeHints は XSizeHints 構造体の各フィールドを設定し、 ユーザが提供したフィールド (フィールドに値が定義されているかは 別として)のリストへの引数 supplied_return を設定し、 ゼロ以外のステータスを返します。 それ以外の場合は、ゼロのステータスを返します。 ウィンドウの通常のサイズヒントを得るためには、 XGetWMNormalHints 関数を使います。 XGetWMSizeHints が正常に返り、 そして ICCCM 以前のサイズヒント属性が読まれた場合、 引数 supplied_return は下記の様なビット構成となります。

(USPosition|USSize|PPosition|PSize|PMinSize|
PMaxSize|PResizeInc|PAspect)

同様に、その属性がベースサイズとウィンドウグラビティーフィールドを保持出来る程大きい場合、 引数 supplied_return も下記の様なビット構成となります。

PBaseSize|PWinGravity

XGetWMSizeHints で発生するエラーには、 BadAtom および BadWindow エラーがあります。

属性

WM_NORMAL_HINTS
通常の場合のウィンドウのサイズヒント。 この属性の C 言語のタイプは XSizeHints です。

構造体

XSizeHints 構造体は、 以下の様になります。 /∗ サイズヒントマスクビット ∗/

#define USPosition (1L << 0) /∗ ユーザ定義の x および y ∗/
#define USSize (1L << 1) /∗ ユーザ定義の幅および高さ ∗/
#define PPosition (1L << 2) /∗ 位置指定のプログラム ∗/
#define PSize (1L << 3) /∗ サイズ指定のプログラム ∗/
#define PMinSize (1L << 4) /∗ 最小サイズ指定のプログラム ∗/
#define PMaxSize (1L << 5) /∗ 最大サイズ指定のプログラム ∗/
#define PResizeInc (1L << 6) /∗ サイズ変更値指定のプログラム ∗/
#define PAspect (1L << 7) /∗ 最小および最大の縦横比指定のプログラム ∗/
#define PBaseSize (1L << 8)
#define PWinGravity (1L << 9)
#define PAllHints (PPosition|PSize|PMinSize|
PMaxSize|PResizeInc|PAspect)

/∗ Values ∗/
 typedef struct {
long flags;/∗ 属性のどのフィールドが定義されているかを示す ∗/
int x, y;/∗ 旧式 ∗/
int width, height;/∗ 旧式 ∗/
int min_width, min_height;
int max_width, max_height;
int width_inc, height_inc;
struct {
       int x;/∗ 分子 ∗/
       int y;/∗ 分母 ∗/
} min_aspect, max_aspect;
int base_width, base_height;
int win_gravity;
} XSizeHints;

メンバの x、y、width(幅)、 そして height(高さ)など、 今では使われませんが、 単に互換性を保つために残されています。 メンバの min_width や min_height が、 これまで通りアプリケーションに有効な最小ウィンドウサイズを指定します。 メンバの max_width と max_height は最大ウィンドウサイズを指定します。 ウィンドウのサイズ変更の場合、 メンバの width_inc と height_inc はサイズ(最小から最大)の計算処理を定義します。また、 メンバの min_aspect と max_aspect は x と y の比率を示すものとして表現され、 アプリケーションで縦横比の範囲を指定出来ます。 メンバの base_width と base_height は希望のウィンドウサイズを定義出来ます。 ウィンドウマネージャは、ウィンドウの位置とそのボーダー幅を解釈し、 メンバ win_gravity で指定されているウィンドウ全体の外側の長方形の位置を 決めます。 ウィンドウの外側の長方形には、ウィンドウマネージャが付ける ボーダーや装飾が含まれます。 つまり、ウィンドウマネージャがウィンドウを クライアントが要求した場所に置く場合、 win_gravity で名前を指定されている、親ウィンドウのボーダー上の位置は、 ウィンドウマネージャがいない場合に置かれるクライアントウィンドウの位置 と同じになります。 PAllHints マクロの使用は、ご遠慮下さい。

診断

BadAlloc サーバはリクエストされたリソースまたはサーバメモリの割り当てに失敗した。

BadAtom Atom 引数の値が定義された Atom に一致しない。

BadWindow
ウィンドウ引数の値が定義されたウィンドウに一致しない。

”関連事項"

XAllocClassHint(3X11), XAllocIconSize(3X11), XAllocWMHints(3X11), XFree(3X11), XSetCommand(3X11), XSetTransientForHint(3X11), XSetTextProperty(3X11), XSetWMClientMachine(3X11), XSetWMColormapWindows(3X11), XSetWMIconName(3X11), XSetWMName(3X11), XSetWMProperties(3X11), XSetWMProtocols(3X11), XStringListToTextProperty(3X11)
Xlib − C Language X Interface

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026