演習35 「API」 の解説 No.3
《APIの参考書籍》 215〜230 ページ参照。
《閉じる[x]ボタンを 削除する》
'------------- [ThisWorkbook] -------------
Private Sub Workbook_Open()
UserForm3.Show
End Sub
'--------------- [Module3] ---------------
'API関数と定数の宣言
'クラスからウィンドウハンドルを取得
Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'ウィンドウに関する情報を取得
Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
'ウィンドウの属性を変更
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
'ウィンドウのメニューバー外枠を再描画
Declare Function DrawMenuBar Lib "user32" _
(ByVal hwnd As Long) As Long
'定数の設定
'ウィンドウスタイルを取得
Public Const GWL_STYLE = -16&
'タイトルバーにコントロールメニュー
'ボックスを持つウィンドウを作成
'(ただし、ユーザーフォームにはない)
Public Const WS_SYSMENU = &H80000
'-------------- [UserForm3] --------------
Private Sub UserForm_Initialize()
'[x]ボタン削除
Dim hwnd As Long
Dim lngNewLong As Long
Dim rc As Long
Dim strClassName As String 'クラス名
'ユーザーフォームのクラス名を指定
strClassName = "ThunderDFrame"
'ウィンドウのハンドルを取得
hwnd = FindWindow(strClassName, Me.Caption)
'ウィンドウに関する情報を取得
lngNewLong = GetWindowLong(hwnd, GWL_STYLE)
'ウィンドウの属性を変更(削除)
rc = SetWindowLong(hwnd, GWL_STYLE, _
lngNewLong And (Not WS_SYSMENU))
'ウィンドウのメニューバーの外枠を再描画
rc = DrawMenuBar(hwnd)
End Sub
'-----------------------------------------
Private Sub CommandButton3_Click()
Unload Me
End Sub
'-----------------------------------------
API No.2 へ戻る.
API No.4 へ移る. back top