我正在使用Visual Basic 6(請不要笑),並且我希望在運行時動態地將控件放置在基於「頂級」菜單項之一的位置(如「文件「,」編輯「,」查看「)。不幸的是,VB的菜單控件(它們是這些「文件」,「編輯」等東西所具有的控件類型)沒有任何屬性,如「頂部」,「左」,「高度」或「寬度」。如何判斷VB6中菜單項的位置?
我只能做實驗,目測它,並最終到達數字,我會硬編碼,但出於各種原因,我寧願代碼實際上找出控制應該去哪裏。
我在想,也許有一些Windows API調用,我可以用它來弄清楚菜單控件的位置?
在此先感謝。
編輯:萬一它很重要,這是在一個MDI表格。
編輯#2:
OK,回答我的問題:
您可以通過GetMenuBarInfo功能得到每個項目的主菜單欄上的位置,如:
Dim mbi as MENUBARINFO
mbi.cbSize = LenB(mbi)
GetMenuBarInfo Me.hWnd, OBJID_MENU, lMenuNumber, mbi
其中 「lMenuNumber」 爲1的第一(例如 「文件」),2表示第二個(例如, 「編輯」)等
即MBI STRU ct有一個rcBar成員,它是該菜單項所在矩形的座標。
不幸的是,它在相對於屏幕的絕對座標中,而不是相對於MDI形式。所以,讓mbi成爲你感興趣的和第一個的,然後減去。
另外,在mbi中給出的位置是以像素爲單位的,因此可以根據需要轉換爲緹或任何。
按位置你是指第一,第二等或其座標? – BlackBear 2011-05-11 14:21:00
座標。我想弄清楚頂部,左邊等。 – 2011-05-11 14:21:50
請不要這樣做。把你的控制權放在菜單欄以外的地方。菜單欄用於菜單。 – 2011-05-11 15:27:07