Microsoft Access Club >Access一日一見 >このページ >次頁 <前項  サイト内検索


円形フォームの作成 - Windows API -



今回は、お遊びで円形フォームの作成方法をご紹介します。これは単に、四角形のフォームを円形で表示するだけです が、受けるでしょうね。WindowsAPIを用いて実現します。

完成図

Windows APIとは

Windows API (Application Program Interface)をAccessVBAで利用するためには、宣言を記述しなくてはいけません。これは定型文ですから、覚える必要は ありません。サンプルファイルのモジュール欄に纏めてありますから、必要なときにダウンロードしてご利用下さい。

このAPIは、「IT用語辞典」によると下記のように説明されています。

あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に使用できる命令や関数の集合のこと。 また、それらを利用するためのプログラム上の手続きを定めた規約の集合。

個々のソフトウェアの開発者がソフトウェアの持つすべての機能をプログラミングするのは困難で無駄が多いため、 多くのソフトウェアが共通して利用する機能は、OSやミドルウェアなどの形でまとめて提供されている。
個々の開発者は規約に従ってその機能を「呼び出す」だけで、 自分でプログラミングすることなくその機能を利用したソフトウェアを作成することができる。

デザインビュー

四角形のオブジェクトを作成します。デザインビュー時は円形ではありません。

標準プロシージャの作成

標準プロシージャを記述します。これは定型文ですから、そのままコピーしてご利用下さい。

Option Compare Database
Option Explicit

Public Declare Function SetWindowRgn Lib "user32" _
(ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Public Declare Function CreateEllipticRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Public Declare Function CreatePolygonRgn Lib "gdi32" _
(lpPoints As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

Function WinAPIRing(frmCurrentForm As Form)
    
    Dim lRet As Long

    lRet = CreateEllipticRgn(60, 60, 310, 310)
    lRet = SetWindowRgn(frmCurrentForm.hWnd, lRet, True)

End Function

フォームの開く時イベントプロシージャの作成

利用するフォームの開く時イベントプロシージャを記述します。

Private Sub Form_Open(Cancel As Integer)

    Call WinAPIRing(Me) ' 標準プロシージャWinAPIRingを呼び出します。
    
    ' デーベースウィンドウを最小化する
    DoCmd.SelectObject acForm, "frm_sample", True
    DoCmd.Minimize

End Sub

フォームの閉じる時イベントプロシージャの作成

利用するフォームの閉じる時イベントプロシージャを記述します。
Private Sub Form_Close()

    ' デーベースウィンドウを元に戻す
    DoCmd.SelectObject acForm, "frm_sample", True
    DoCmd.Restore

End Sub

関連ページ

2003/11/09

ページの先頭へ 前ページへ戻る

 


円形フォームの作成 - Windows API -


-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。