Използвам Visual Basic 6 (моля, не се смейте) и бих искал динамично да позиционирам контрола, по време на изпълнение, в позиция въз основа на позицията на един от елементите на менюто от "най-високо ниво" (като "Файл" , „Редактиране“, „Преглед“).
За съжаление, контролата на менюто на VB (която е типът контрола, който са тези неща "Файл", "Редактиране" и т.н.) няма никакви свойства като "Горе", "Ляво", "Височина" или "Ширина".
Бих могъл просто да експериментирам, да го наблюдавам и в крайна сметка да стигна до числа, които ще кодирам твърдо, но поради различни причини бих предпочел кодът действително да разбере къде трябва да отиде контролата.
Мисля си, че може би има някакво извикване на Windows API, което мога да използвам, за да разбера позицията на контролата на менюто?
Благодаря предварително.
Редактиране: В случай, че има значение, това е на MDI формуляр.
Редактиране #2:
Добре, отговарям на собствения си въпрос:
Можете да получите позицията на всеки елемент в лентата на главното меню чрез функцията GetMenuBarInfo, като например:
Dim mbi as MENUBARINFO
mbi.cbSize = LenB(mbi)
GetMenuBarInfo Me.hWnd, OBJID_MENU, lMenuNumber, mbi
Където "lMenuNumber" е 1 за първия (напр. "Файл"), 2 за втория (напр. "Редактиране") и т.н.
Тази mbi структура има член rcBar, който е координатите на правоъгълника, където е този елемент от менюто.
За съжаление, това е в абсолютни координати спрямо екрана, а не спрямо формата на MDI. И така, вземете mbi на този, който ви интересува и на първия, и извадете.
Освен това позицията, дадена в mbi, е в пиксели, така че преобразувайте, ако е необходимо, в twips или каквото и да е друго.