Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30 / 9991 ←次へ | 前へ→

【13231】Re:画面リサイズを不可にするとタイトル上のボタンがクラッシックスタイル表示になる
回答  バンブー  - 18/2/10(土) 20:29 -

引用なし
パスワード
   ▼hatena さん:
>動作検証できるように宣言部も含めて、実際に動作するコードを提示してもらえませんか。

Public 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 fuFlags As Long) As Long
Public Declare Function GetSystemMenu Lib "USER32" _
  (ByVal hWnd As Long, ByVal fRever As Long) As Long
Public Declare Function RemoveMenu Lib "USER32" _
  (ByVal hMenu As Long, ByVal uItem As Long, ByVal fuFlags As Long) As Long
  

Public Const SWP_NOMOVE = &H2
Public Const HWND_TOP = &H0
Public Const SC_SIZE = &HF000
Public Const MF_BYCOMMAND = &H0&

Dim hWnd As Long

hWnd = Application.hWndAccessApp
SetWindowPos hWnd, HWND_TOP, 0, 0, 960, 720, SWP_NOMOVE
hWnd = GetSystemMenu(hWnd, 0)
RemoveMenu hWnd, SC_SIZE, MF_BYCOMMAND


>あと、OSのバージョンも提示してください。
Windows7
Access2010,Access2016Runtime
です。
Access2010で作成し、Access2010で実行すると問題ないですが、
Access2016Runtimeで実行すると症状が出ます。
※Access2016で作成したものは多分ならないと思います。

>Accessウィンドウを表示しない方法 Access2007以降版 - hatena chips
>hatenachips.blog.fc2.com/blog-entry-389.html
>
>
>なお、RemoveMenu や DeleteMenu でリサイズを無効にした場合、マウスをフォームの境界に持っていくと、リサイズ可能カーソルに変化するのに、リサイズできないという矛盾した状態になりますので、SetWindowLon で、WS_THICKFRAME属性を除去する方法の方が私は好みです。

ご教授ありがとうございます。
上記のURLを参考に、SetWindowLon で、WS_THICKFRAME属性を除去したらマウスをフォームの境界に持っていっても、最小化/最大化/閉じるボタンがクラッシックスタイル表示に変わらなくなりました。

変更した点は以下です。

Public Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Const SWP_DRAWFRAME = &H20
Public Const GWL_STYLE = (-16)
Public Const WS_THICKFRAME = &H40000

Wstyle = GetWindowLong(hWnd, GWL_STYLE)
Wstyle = Wstyle And Not WS_THICKFRAME
SetWindowLong hWnd, GWL_STYLE, Wstyle

を追加し、SetWindowPosを

SetWindowPos hWnd, HWND_TOP, 0, 0, 960, 720, SWP_NOMOVE Or SWP_DRAWFRAME

に変更。

ただ、タイトル部分にマウスを移動してタイトルをクリックするとまだ最小化/最大化/閉じるボタンがクラッシックスタイル表示に変わります。
ダブルクリックしたり、クリックしたままドラッグ移動すると消えるのですが、何故そうなるのか不明です。

何か原因が判りましたらご教授お願いいたします。

145 hits

【13229】画面リサイズを不可にするとタイトル上のボタンがクラッシックスタイル表示... バンブー 18/2/9(金) 18:18 質問[未読]
【13230】Re:画面リサイズを不可にするとタイトル上... hatena 18/2/10(土) 17:54 回答[未読]
【13231】Re:画面リサイズを不可にするとタイトル上... バンブー 18/2/10(土) 20:29 回答[未読]
【13232】Re:画面リサイズを不可にするとタイトル上... hatena 18/2/12(月) 12:32 回答[未読]
【13233】Re:画面リサイズを不可にするとタイトル上... バンブー 18/2/13(火) 11:47 お礼[未読]

30 / 9991 ←次へ | 前へ→
ページ:  ┃  記事番号:
1013966
(SS)C-BOARD v3.8 is Free