質問するログイン新規登録

回答編集履歴

1

フォームのスタイル変更用プロシージャ追記

2019/11/28 11:23

投稿

imihito
imihito

スコア2166

answer CHANGED
@@ -106,4 +106,44 @@
106
106
  End If
107
107
 
108
108
  End Sub
109
+ ```
110
+
111
+ ---
112
+
113
+ 191128 20:22 追記
114
+
115
+ ```vba
116
+ Public Sub ChangeUserFormStyle(inFormCaption As String)
117
+ Const ClassNameOfVBAUserFrom = "ThunderDFrame"
118
+ 'このフォームのハンドルを取得。
119
+ Dim hWnd As LongPtr
120
+ hWnd = FindWindow(ClassNameOfVBAUserFrom, inFormCaption)
121
+ If hWnd = 0 Then
122
+ '取得できていない
123
+ Stop
124
+ End If
125
+
126
+ Dim wStyle As LongPtr
127
+ wStyle = GetWindowLongPtr(hWnd, GWL_STYLE)
128
+ 'リサイズ可能・最大化・最小化ボタンフラグを立てる
129
+ wStyle = (wStyle Or WS_THICKFRAME Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX)
130
+ Call SetWindowLongPtr(hWnd, GWL_STYLE, wStyle)
131
+
132
+ Dim hMenu As LongPtr
133
+ hMenu = GetSystemMenu(hWnd, 0&)
134
+ Dim rClose As API_BOOL
135
+ rClose = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
136
+ If rClose <> apiTrue Then
137
+ '何か失敗している
138
+ Stop
139
+ End If
140
+
141
+ Dim wRet As API_BOOL
142
+ wRet = DrawMenuBar(hWnd)
143
+ If wRet <> apiTrue Then
144
+ '何か失敗している
145
+ Stop
146
+ End If
147
+
148
+ End Sub
109
149
  ```