|
OfficeXP DeveloperでCOMアドインの作成にチャレンジして
いるのですが、ユーザーフォームで困っています。
ユーザーフォームを作成すると最大・最小ボタンが自動的についていて、
サイズ変更も可能なものになっているのですが、これを解除したいのです。
「かずんち!」さんのHPを参考にまずは[x]閉じるボタンの削除から
やってみたのですが、デバックモードでは上手く行くいっても、DLL
にしてインストールすると全然ダメでした。
アドインの機能にはあまり影響ないのですが、好ましくないのでどうかお知恵
を拝借させてください。どうか宜しくお願い致します。
--UserForm--
Private Sub CommandButton1_Click()
Dim hwnd As Long
Dim MySetWin As Long
Dim Ret As Long
hwnd = FindWindow("ThunderDFrame", Me.Caption)
MySetWin = GetWindowLong(hwnd, -16&)
If CommandButton1.Caption = "閉じるボタンを非表示" Then
Ret = SetWindowLong(hwnd, -16&, MySetWin And (Not &H80000))
CommandButton1.Caption = "閉じるボタンを表示"
Else
Ret = SetWindowLong(hwnd, -16&, MySetWin Or &H80000)
CommandButton1.Caption = "閉じるボタンを非表示"
End If
Ret = DrawMenuBar(hwnd)
Label1.Caption = hwnd '←デバックでは値をとってるがDLLだと0
Label2.Caption = MySetWin '←デバックでは値をとってるがDLLだと0
End Sub
--標準モジュール--
Option Explicit
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
Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Declare Sub ReleaseCapture Lib "user32" ()
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
|
|