FrontPage

Smirnoffとは

Smirnoffとは、Spirytusの外部ウィンドウ表示システムが余りに使いにくかったため、新たに開発された外部ウィンドウ表示専用のDLLです。

現行バージョンは0.33で、以下のリファレンスに存在する関数でも未実装のモノがまだあるかもしれません。

Smirnoffの特徴

概念・用語解説

WindowとScreen

WindowはCreateWindow関数で作られ、実際に画面上に描画される窓そのものである。これに対して、CreateScreen関数で作られるScreenはそのままでは実際に画面上に描画されず、BitBlt関数を使ってWindowに転送(描画)することによって画面に描画される。これ以外の描画についてはWindowとScreenは完全に互換である。

また、Windowを操作する関数の一部にはScreenに対しては使用することができないものがある。このリファレンスではWindowでもScreenでもよい場合にはDrawingHandle、Windowしか使えない場合にはWindowHandle、Screenのみの場合にはScreenHandleと表記する。

任意のDrawingHandleがWindowHandleなのかScreenHandleなのかを取得するにはGetWindowType関数を用いる。

GDIHandle

GDIHandleとは、WindowやScreenに対してどのような色や幅(線の場合)で描画するのかを示す値である。GDIHandleには

の3種類がある。GDIHandleを作成したら、SelectObject関数でDrawingHandleに対して設定することで、そのDrawingHandleでの描画される色などを変えることができる。 また、DrawingHandleに対してPen,Brush,Fontはそれぞれ別々に設定されるので、Penをどう設定しても塗りつぶしの色は変わらないしBrushをどう設定しても線描画の色は変わらない。

なお、任意のGDIHandleがPenなのかBrushなのかFontなのかを取得するにはGetGDIHandleType関数を用いる。

リファレンス

総則

number SMIRNOFF_VERSION

DLLのバージョンが浮動小数で入っている。

全ての関数は、リファレンスにvoid型と書いてあっても内部でエラーが発生した場合は、

false, エラーメッセージ

の2つの値を返す。assertでそのまま拾えばエラーの内容を取得できる

Window,Screen操作関係

WindowHandle CreateWindow(width, height, name)

窓を作成する。

ScreenHandle CreateScreen(BaseWindow, width, height)

Screen(内部描画バッファ)を作成する。

void DestroyWindow(DrawingHandle)

WindowやScreenを破棄する。

void MoveWindow(WindowHandle, x, y)

窓を移動する

int,int GetWindowPos(WindowHandle)

窓の位置を取得する

void ResizeWindow(WindowHandle, width, height)

Windowのサイズを変更する。クライアント領域がwidth*heightになるようにリサイズするので、フチなどを含めた実際のWindowのサイズはコレよりも大きくなる

int,int GetWindowSize(DrawingHandle)

WindowやScreenのサイズを取得する。取得するのはクライアント領域のサイズなので、Windowの場合は実際のサイズはコレよりも大きくなる DrawingHandle:サイズを取得する窓のハンドル return1:DrawingHandleの横幅 return2:DrawingHandleの高さ

int GetWindowType(DrawingHandle)

任意のDrawingHandleがWindowなのかScreenなのかを取得する DrawingHandle:調べるDrawingHandle return:Windowならば0、Screenならば1

int IsWindowActive(WindowHandle)

任意のWindowHandleがフォーカスされているかを取得する。 return:フォーカスされていれば1,それ以外なら0

void ActivateWindow(WindowHandle)

任意のWindowHandleをフォーカスする

int, int GetMousePosition(WindowHandle)

任意のWindowHandleの左上隅から見たマウス座標を取得する return:マウス座標X、マウス座標Ys

GDIHandle操作関係

GDIHandle CreatePen(color, width)

ペンを作成する

GDIHandle CreateBrush(color)

ブラシを作成する

GDIHandle CreateFont(size, isBold)

フォントを作成する。フォントに色情報はないのでDrawTextで指定すること

GDIHandle SelectObject(DrawingHandle, GDIHandle)

WindowやScreenに対して、描画に用いるGDIHandleを指定する

void DeleteObject(GDIHandle)

指定したGDIHandleを削除する。DrawingHandleに対して設定したまま削除してもOK

int GetGDIHandleType(GDIHandle)

GDIHandleの種別(ペンなのかブラシなのか)を取得する

int GetTextWidth(DrawingHandle, string)

指定したDrawingHandleにおいてstringの文字列の横幅を取得する

int GetTextHeight(DrawingHandle, string)

指定したDrawingHandleにおいてstringの文字列の高さを取得する

int GetGDIHandleCount()

現在作られているGDIHandleの総数を取得する。デバッグ用に。 return:現在作られているGDIHandleの総数

描画関係

総則

描画関数の座標系はDrawingHandleのクライアント座標、すなわちWindowであればタイトルやフチを含まない部分の左上、Screenであれば左上を原点とする。

void DrawRectangle(DrawingHandle, x, y, width, height)

長方形の縁を描画(塗りつぶさない) DrawingHandle:描画先のDrawingHandle x:長方形の左端の座標 y:長方形の上端の座標 width:長方形の幅 height:長方形の高さ

void FillRectangle(DrawingHandle, x, y, width, height)

長方形を塗りつぶし描画(縁はない) DrawingHandle:描画先のDrawingHandle x:長方形の左端の座標 y:長方形の上端の座標 width:長方形の幅 height:長方形の高さ

void DrawText(DrawingHandle, x, y, color, string)

文字列を描画 DrawingHandle:描画先のDrawingHandle x:文字列の左端のX座標 y:文字列の上端のY座標 color:文字列の色 string:表示する文字列

void MoveTo(DrawingHandle, x, y)

線描画のカレントポジションを移動する(_MOVE2Dの同類) DrawingHandle:描画先のDrawingHandle x:移動先のX座標 y:移動先のY座標

void LineTo(DrawingHandle, x, y)

直線を描画するとともにカレントポジションを移動する(_LINE2Dの同類) DrawingHandle:描画先のDrawingHandle x:描画先のX座標 y:描画先のY座標

void BitBlt(WindowHandle, ScreenHandle, x, y)

指定したWindowHandleの(x,y)の位置にScreenHandleの内容を転送する


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-12-27 (火) 22:21:47