タイトル | : VB6.0からExcel2010メニューバー制御 |
記事No | : 15402 |
投稿日 | : 2011/12/17(Sat) 11:28 |
投稿者 | : ほっけ |
今までVB6.0からExcel2003の制御を行っていましたがこの度Excel2010を使用することになりExcel2010にあわせた開発をすることなりました。
今まではExcel(Excel2003)のシステムメニューバー(最大・最小化・閉じる等)をDeleteMenuを下記のように使用して使用不可制御をしていましたが、Excel2010のシステムメニューバーの制御が閉じるの制御は今まで通りできるのですが最大・最小化の制御ができなくなり、書籍などにも制御方法が載っておらず困っています。
最大・最小化は制御できない仕様なのでしょうか。 もし制御方法をご存知の方がいましたらお教えいただけないでしょうか。
どうかよろしくお願い致します。
Public Declare Function DeleteMenu Lib "USER32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const SC_CLOSE = &HF060 '「閉じる」 Public Const SC_SIZE = &HF000'「サイズ変更」 Public Const SC_MAXIMIZE = &HF030 '「最大化」 Public Const SC_RESTORE = &HF120 '「元のサイズに戻す」 Public Const SC_MINIMIZE = &HF020 '「最小化」 Public Const SC_MOVE = &HF010'「移動」
'------------------------------------------ '■関数名 Delete '■用途 システムメニューの項目を削除する '■引数 nHandle:ウインドウのハンドル ' Flag:削除する項目(SC_××参照) '------------------------------------------
Public Sub Delete(nHandle As Long, Flag As String)
Dim hMen As Long Dim Ret As Long
'システムメニューのハンドルを確保 hMen = GetSystemMenu(nHandle, 0) 'システムメニューの項目を削除する Ret = DeleteMenu(hMen, Flag, MF_BYCOMMAND) '描画(変更を反映) Ret = DrawMenuBar(nHandle)
End Sub
'ここからはフォームの処理です Private Sub Command1_Click Call Delete(hwnd, SC_SIZE) End Sub
|