tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVB6.0からExcel2010メニューバー制御
記事No15402
投稿日: 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

[ツリー表示へ]
タイトルRe: VB6.0からExcel2010メニューバー制御
記事No15403
投稿日: 2011/12/18(Sun) 23:18
投稿者オショウ
レスがつかないので・・・

確認していませんが、2010は、タブコントロールとなっていますので
その為に今までの方法が使えないのでは?

Spy++使ってコントロールが何かを確認すれば、解決すのでは?

以上。参考まで

[ツリー表示へ]
タイトルRe^2: VB6.0からExcel2010メニューバー制御
記事No15405
投稿日: 2011/12/20(Tue) 00:52
投稿者ほっけ
オショウ様

> Spy++使ってコントロールが何かを確認すれば、解決すのでは?

Spy++の存在を初めて知りました。このようなツールがあるんですね。
Spy++を使用してコントロールを調べてみます。

教えていただきましてありがとうございました。

[ツリー表示へ]
タイトルRe: VB6.0からExcel2010メニューバー制御
記事No15406
投稿日: 2011/12/27(Tue) 00:20
投稿者花ちゃん
> 最大・最小化は制御できない仕様なのでしょうか。

制御とは具体的にどのような事がしたいのでしょうか?
Excel 2010 をインストールして試してみましたが、ボタンの削除やシステムメニューの
削除・復元等、今までのコードでできますが。

正しく動作しないのは、使用されているコードが間違っているからだと思います。
(よくコードを確認して見て下さい、単純ミスが見つかるはずです。)

VB6.0(SP6) Windows 7  Excel 2010

[ツリー表示へ]