Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 01:51

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 16:29 
Не в сети

Зарегистрирован: Вт апр 27, 2010 15:46
Сообщения: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте. Недавно установил SPF -4.20 и наткнулся на такую хохму: хочу вывести окно сообщения, пишу
Код:
S" ~YZ/LIB/WINCONS.F" INCLUDED
WINAPI: MessageBoxA user32.dll
: PLACE HERE >R DUP DUP , ALLOT R@ 1+ SWAP CMOVE 0 , R> ;
S" ЗАГОЛОВОК" PLACE VALUE TYTLE
S" УРРААААА!!!!" PLACE VALUE TEXT
: MSGBX 2 TYTLE COUNT DROP TEXT COUNT DROP 0 MessageBoxA   ;

MSGBX

- на выходе - ноль. На предыдущей версии форта всё работает, если скомпилить всё в exe-шник тоже всё работает.
После долгих матюков и эксперементов обнаружил: окошко начинает выводится, если в код вставить строчку:
Код:
WINAPI: InitCommonControlsEx COMCTL32.DLL
Какое она имеет к MessageBox-у непонятно. Это что, баг такой или у меня крыша поехала ?!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 16:34 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Проще надо быть:
Код:
WINAPI: MessageBoxA user32.dll
0 S" Заголовок" DROP S" Сообщение" DROP 0 MessageBoxA DROP

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 16:41 
Не в сети

Зарегистрирован: Вт апр 27, 2010 15:46
Сообщения: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Согласен, но суть вопроса от этого не меняется.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 17:20 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Еще как меняется: в приведенном в первом посте коде делается непонятно что и непонятно зачем - много лишнего и ненужного. Сообщение на винапи выводится одной строчкой. Ровно так, как указано в мсдн - ни больше, ни меньше.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 17:51 
Не в сети

Зарегистрирован: Вт апр 27, 2010 15:46
Сообщения: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
я к тому что именно на SPF -4.20 у меня сообщение выводится не хочет


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 18:15 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
А вот у меня выводится. Значит надо копать на месте.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 18:22 
Не в сети

Зарегистрирован: Вт апр 27, 2010 15:46
Сообщения: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
ПОНЯТНО СПАСИБО


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 20:07 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
) понятно,
скажите кто-нибудь Юникод использует для представления текстовых строк?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Вт апр 27, 2010 20:10 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Alexander писал(а):
) понятно,скажите кто-нибудь Юникод использует для представления текстовых строк?

в каком смысле кто-нибудь? и о каком юникоде речь :)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Ср апр 28, 2010 11:15 
Юникод необходимо использовать при генерации диалогов и прочих Win-ресурсов.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Чт апр 29, 2010 00:19 
Не в сети

Зарегистрирован: Вт апр 27, 2010 15:46
Сообщения: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
В библиотеке ~yz/lib/common.f есть слова для работы с юникодом. А чтобы вывести сообщение используйте MessageboxW


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Сб сен 19, 2015 14:30 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Цитата:
хочу вывести окно сообщения, пишу
Код:
S" ~YZ/LIB/WINCONS.F" INCLUDED
WINAPI: MessageBoxA user32.dll
: PLACE HERE >R DUP DUP , ALLOT R@ 1+ SWAP CMOVE 0 , R> ;
S" ЗАГОЛОВОК" PLACE VALUE TYTLE
S" УРРААААА!!!!" PLACE VALUE TEXT
: MSGBX 2 TYTLE COUNT DROP TEXT COUNT DROP 0 MessageBoxA ;

MSGBX

- на выходе - ноль. На предыдущей версии форта всё работает, если скомпилить всё в exe-шник тоже всё работает.

У меня тоже самое. SP-Forth 4.20 код:
Код:
WINAPI: MessageBoxA user32.dll
0 S" Заголовок" DROP S" Сообщение" DROP 0 MessageBoxA DROP

-- тоже ничего не показывает, сообщение об ошибке не выдает, в консоль не пишет. В кансоли нажимаю "Enter" -- пишет "Ок".

Добавление строки:
Код:
WINAPI: InitCommonControlsEx COMCTL32.DLL

-- помогло. Поискал в интернете по запросу: "MessageBox COMCTL32.DLL". Оказалось с этим есть проблемы. Модальное окно не создается без InitCommonControlsEx. Может в предыдущих версиях было по другому?

Вот две ссылки которые выдал поиск:

Может кто-то знает почему так и может исправить, чтобы MessageBox работал в режиме интерпретации?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Сб сен 19, 2015 14:37 
kzagradskiy писал(а):
Модальное окно не создается без InitCommonControlsEx. Может в предыдущих версиях было по другому?
"Предыдущих версиях" чего? Это проблема Win-API или чисто SPF?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Сб сен 19, 2015 14:59 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
gudleifr писал(а):
kzagradskiy писал(а):
Модальное окно не создается без InitCommonControlsEx. Может в предыдущих версиях было по другому?
"Предыдущих версиях" чего? Это проблема Win-API или чисто SPF?

Мда... Похоже проблема WinAPI. Тогда может быть какой-нибудь патч для SP-Forth'а?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Вывести MessageBox
СообщениеДобавлено: Сб сен 19, 2015 15:39 
kzagradskiy писал(а):
Похоже проблема WinAPI.
Посмотрел листинги FOBOS. Действительно, имя InitCommonControlsEx присутствует - только это не ф-ия, а тип-структура (то же самое, только большими буквами), которую masm зафигачил самостоятельно. И, по-видимому, она никак не связана с COMCTL32.DLL. По крайней мере, никаких следов наличия последней до того, как я начинаю ее прицеплять руками, не нашел.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB