Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/77: Рейтинг темы: голосов - 77, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124

Popup Menu

02.02.2012, 13:04. Показов 14502. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация такая, необходимо написать popup меню, для win машин.
Наткнулся на пару глюков с клиентом 8,5:
1. GetActiveWindow не работает. зато работает GetFocus
2. GetMenuString не возвращает выбранную строку меню.
3. TrackPopupMenu или TrackPopupMenuEx работают как-то попеременно... Но тут я мог ошибиться ;)
4. Как использывать GetLastError? не получается :( не возвращает ничего

Никто не занимался переносом меню с 7ки на 8ку?
Мне ее с нуля писать, так что советы и предложения с удовольствием выслушаю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2012, 13:04
Ответы с готовыми решениями:

Popup Menu Из Extensionlibrary
Всем привет. Вот проблема на пустом(?) месте: не применяются стили к popupMenu - popup после этого просто не показывается :( Это,...

popup меню в lotus
Подскажите пожалуйста. Мне необходимо в дизайнере в окне редактирования кода добавить свой строку в попапе. При нажатии на которую будет...

Хирое Popup окно в лотусе
В общем тут у меня поитересовались, можно ли в лотусе предопределить положение окон, например: Я нажимаю на кнопку при этом выполняется...

10
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
02.02.2012, 13:09
Тут что то есть:
http://techforum.intertrust.ru/site/itforu...C8?OpenDocument
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.02.2012, 09:24
Спасибо. но это я уже читал
Сейчас основная проблема это GetMenuString не записывает в буффер текст пункта меню.


LotusScript
1
2
3
Dim menuS As String*128
t = TrackPopupMenu(Me.hMenu, 256, Me.p.x, Me.p.y, 0, Me.hWnd, Me.r)
call GetMenuString(Me.hMenu, t, menuS, 0, 0)
Вот что может быть?

win7 + Lotus 8.5.2, права локального админа на машине есть.
0
0 / 0 / 0
Регистрация: 30.12.2007
Сообщений: 583
05.02.2012, 11:31
savl


Так пройдитесь в дебагере. посмотрите есть ли все данные.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.02.2012, 14:04
проходил, на этой строке:
call GetMenuString(Me.hMenu, t, menuS, 0, 0)

menuS до вызова - пустая

после вызова - пустая.

Если menuS до вызова забить чем-то, то она не меняется после вызова. А должна!

хрень
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.02.2012, 15:51
так... исправил другим способом.

Сделал для меню постоянный ID (число 8-значное ) когда добавляю элемент из этого ID вычитаю 1. Хватит надолго.
TrackPopUpMenu возвращает ID itemа.
Затем вычитаю из ID меню ID этого Itemа и получаю порядковый номер элемента, затем выбираю элемент из массива.

Что за фигня с GetMenuString так и не понял Так что тема открыта.
0
0 / 0 / 0
Регистрация: 12.10.2007
Сообщений: 522
08.10.2012, 22:01
Цитата Сообщение от savl
так... исправил другим способом.

Сделал для меню постоянный ID (число 8-значное ) когда добавляю элемент из этого ID вычитаю 1. Хватит надолго.
TrackPopUpMenu возвращает ID itemа.
Затем вычитаю из ID меню ID этого Itemа и получаю порядковый номер элемента, затем выбираю элемент из массива.

Что за фигня с GetMenuString так и не понял :( Так что тема открыта.

Можете выложить базу с примером?
0
0 / 0 / 0
Регистрация: 07.02.2010
Сообщений: 1,063
09.10.2012, 09:26
call GetMenuString(Me.hMenu, t, menuS, 0, 0)
А почему размер буфера (предпосл. параметр) нулевой?
ЗЫ. GetLastError не сработает, т.к. ошибку "забирает себе" движок Лотуса, обрабатывающий API-вызовы. Лучше написать свою DLL. А еще лучше, наверное, использовать JAVA...
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
09.10.2012, 09:28
Это я тогда не разбирался сильно :(
Сейчас работает:

LotusScript
1
2
3
4
5
6
7
Call SetForegroundWindow(Me.hWnd)
If Me.p.x < 0 Or Me.p.y < 0 Then Call GetCursorPos(Me.p)
Call TrackPopupMenu(Me.hMenu, &H0, Me.p.x, Me.p.y, 0, me.hwnd, Me.r)
ret = GetMessage(msgdata, me.hwnd, 0, 0)
i = Abs(msgdata.message)
If i <> 273 Then GoTo endh
show = me.MenuArr(msgdata.wParam)
По поводу примера, могу дать библиотеку, но она не до конца дописана. Пары возможностей еще нет.
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
09.10.2012, 11:01
Цитата Сообщение от savl
Спасибо. но это я уже читал :(
Сейчас основная проблема это GetMenuString не записывает в буффер текст пункта меню.


LotusScript
1
2
3
Dim menuS As String*128
t = TrackPopupMenu(Me.hMenu, 256, Me.p.x, Me.p.y, 0, Me.hWnd, Me.r)
call GetMenuString(Me.hMenu, t, menuS, 0, 0)
Вот что может быть?

win7 + Lotus 8.5.2, права локального админа на машине есть.
а так работает ?

LotusScript
1
2
3
4
5
6
7
8
9
t=TrackPopupMenu (hMenu, 256, x, y, 0, GetFocus(), 0)
 
l=GetMenuString (hMenu, t, menuS, 0, 0)+1   l as long
Call GetMenuString (hMenu, t, menuS, l, 0)
Call PostMessage(hWnd, 0, 0, 0)
For i=1 To l-1
s=Mid(MenuString,i,1)
Show=Show+s название выбранного пункта
Next
обработчик апи ошибок


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Function GetAPIError (errorCode As Integer) As String
On Error Goto errHandler
Const FuncName = "iStub. GetAPIError ()"
 
Dim errorString As String * 256
Dim returnErrorString As String
Dim resultStringLength As Long
Dim errorCodeTranslated As Integer
 
errorCodeTranslated = (errorCode And ERR_MASK) Const ERR_MASK = &H3fff
resultStringLength = OSLoadString(0, errorCodeTranslated, errorString, Len(errorString) - 1)
 
If Instr(errorString, Chr(0)) > 0 Then
returnErrorString = Left(errorString, Instr(errorString, Chr(0)) - 1)
Else
returnErrorString = errorString
End If
 
GetAPIError = returnErrorString
 
Goto endH
errHandler:
Error Err, FuncName & ", стр." & Erl & Chr (10) & Error$
endH:
End Function
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
09.10.2012, 11:05
Kee_Keekkenen
от этого варианта ушел, когда нашел структуру msgdata
Да и вопрос уже решен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2012, 11:05
Помогаю со студенческими работами здесь

Надо бы раздобыть какой-нить немодальный Popup
Камрады, добрый! Хочу прикрутить немного красивостей к базе. Нужен скриптик, котороый мог бы показать немрдальный попап около...

popup menu
вопрос такой - на форме лижит панел (pnl1), у нее в свойствах popupMenu - pm1. На этой панельке есть другие компоненты - как мне...

Popup menu
Ребят подскажите.В общем использую popup menu и у одного из его строк есть submenu.Как программно добавлять новые строки в это submenu??? ...

Popup menu
Как создать Popup menu на C# и чтобы оно появлялось при нажатии на правую кнопку! :(

C++ Builder Popup Menu
Всем привет, есть форма на которой помещены PaintBox,Popup menu, на PaintBox есть круги, при нажатии на PopupMenu нужно сделать так чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru