最終更新日 :
VB Tips

APIを使うとできる機能
VBでできないことでも、APIを使えば何とかできるかもしれないということを書きます。

ウィンドウに表示する文字数(固定ピッチにおいて)を限定する
ウィンドウに表示する文字数を限定したい場合、フォント関係のAPIを使用する必要があります。
移植を考える人であればある程度のAPIを使っていると思いますので、ここでAPIについての詳しい説明は省かせてもらいますが、LOGFONT構造体の中身を適当に変えて、CreateFontIndirect()をやることで実現できます。
また、メッセージWM_GETMINMAXINFOをフックをすることでウィンドウの最大サイズ・最小サイズを自由に変更できます。(変更の際はメモリ操作が必要になります → VBTips No.13)
パレットの変更
マルチタスク・グラフィックシステムで動作しているWindowsでは一つのパレットで管理しているとちょっとしたパレットの操作がシステム全体に影響することになります。 ですから、ウィンドウごとにパレットハンドルというものを持たせ、ウィンドウがアクティブになった時にそのウィンドウのパレット情報を復元する方法を取っています。また十六色の時、パレット情報は固定されています。 よってCOLOR@というステートメントはありません。
パレットの操作はここでは詳しく述べませんが、GetPaletteEntries()で取得、SetPaletteEntries()で設定します。
塗りつぶし
VBではPAINTステートメントはありません。APIでFloodFill(), FloodFillEx()APIがありますが、領域が複雑な時は速度が遅くあまり使い物になりません。 四角形を塗りつぶす時はLine ..., BFメソッド、多角形を塗りつぶす時はAPIのPoly...()系APIを使用するなどして対応する方がいいと思います。また、リージョンを塗りつぶすFillRgn()APIや、クリップリージョン(→ VBTips No.9) を使用して複雑な領域を速く塗りつぶすなどの方法も有効です。

Copyright (C) 1999 Satoshi Tadaフィードバックはこちら
Home