Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
07.04.2008 20:42

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Знатокам WinAPI, help!

Проблема с вызовом стандартых диалогов:
При первом вызове GetOpenFileName() диалог Open прячется ПОД консольное окно программы, несмотря на то что в MSDNе обещано показавать стандартные диалоги поверх всех окон, как и положено модальным окнам.
Второй и все последующие вызовы GetOpenFileName() отрабатывают правильно и отображают диалог поверх основного окна программы.

Вопрос: как это лечить? smile

P.S. я и сам конечно еще покапаю, но вдруг есть тут Знатоки? Не может не быть...

Неактивен

0    0    #2
07.04.2008 22:02

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Знатокам WinAPI, help!

ASBer написал:

При первом вызове GetOpenFileName() диалог Open прячется ПОД консольное окно программы...

Код, где происходит вызов, в студию. Скорее всего, в твоей программе сразу после вызова диалога устанавливается фокус на консоль.

Неактивен

0    0    #3
07.04.2008 22:12

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

Код:

HANDLE WindowH, InputH, OutputH;
_CONSOLE_SCREEN_BUFFER_INFO Info;
OPENFILENAME ofn;
char input[1024];
char buf[1024];

...

WindowH=GetConsoleWindow();

...

ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=WindowH;
ofn.lpstrFilter=NULL;
ofn.lpstrFile = input;
ofn.nMaxFile = sizeof(input);
ofn.lpstrFilter = "Text Quest\0*.TQE\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

...

char*Str=0;
input[0]=0;
//ShowWindow(WindowH,SW_HIDE);//неудачная попытка обойти баг
if(GetOpenFileName(&ofn))
{ Restart();
  Str=RunFile(input);
}
//ShowWindow(WindowH,SW_RESTORE);//неудачная попытка обойти баг
      
...

вот тут текст целиком
Фокус не устанавливаю, но даже если бы это было, все что после GetOpenFileName(&ofn) сработает после закрытия диалога.

Отредактировано ASBer (08.04.2008 08:56)

Неактивен

0    0    #4
07.04.2008 22:22

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Знатокам WinAPI, help!

ShowWindow(WindowH,SW_HIDE);
прямо перед вызовом диалога. Зачем? Закомментируй HIDE и RESTORE.

Неактивен

0    0    #5
08.04.2008 07:34

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

Nex написал:

ShowWindow(WindowH,SW_HIDE);
прямо перед вызовом диалога. Зачем? Закомментируй HIDE и RESTORE.

угу, это просто неуклюжая попытка исправить вышеописанный баг.
без HIDE и RESTORE работает именно так как я описал. sad

Неактивен

0    0    #6
08.04.2008 10:46

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Re: Знатокам WinAPI, help!

попробуй

Код:

ofn.hwndOwner = NULL

Неактивен

0    0    #7
08.04.2008 11:54

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

fireton написал:

попробуй

Код:

ofn.hwndOwner = NULL

уже пробовал, не помогает sad

Неактивен

0    0    #8
08.04.2008 14:00

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Знатокам WinAPI, help!

А, ну если это не тот самый бажный код, то убери обе строки и где-нибудь в начале программы, например, после строк

//грузим файл игры (или help)
PutStr(RunFile((argc==2)?argv[1]:"help.txt"));

напиши

ShowWindow(WindowH,SW_SHOW);

Неактивен

0    0    #9
08.04.2008 15:24

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

2Nex нет, не помогло sad

Неактивен

0    0    #10
08.04.2008 15:28

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам WinAPI, help!

ASBer написал:

Проблема с вызовом стандартых диалогов:
При первом вызове GetOpenFileName() диалог Open прячется ПОД консольное окно программы, несмотря на то что в MSDNе обещано показавать стандартные диалоги поверх всех окон, как и положено модальным окнам.
Второй и все последующие вызовы GetOpenFileName() отрабатывают правильно и отображают диалог поверх основного окна программы.

Вопрос: как это лечить? smile

P.S. я и сам конечно еще покапаю, но вдруг есть тут Знатоки? Не может не быть...

Я бы это лечить не стал, а принудительно открыл, потом закрыл окно и ждал когда его вызовут второй раз.

Отредактировано Korwin (08.04.2008 15:33)

Неактивен

0    0    #11
08.04.2008 15:56

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

К сожалению закрыть модальный диалог из того-же процесса нельзя, его должен закрыть юзер.
Можно при старте выводить какое-либо сообщение через MessageBox() с флагом MB_SYSTEMMODAL. После этого все диалоги открываются правильно. Кстати MessageBox() без MB_SYSTEMMODAL также первый раз прячется под окно...
Вот только для юзера это лишний бессмысленный клик при каждом открытии программы...
Вот если бы в GetOpenFileName() можно было бы подсунуть MB_SYSTEMMODAL, да некуда sad

Неактивен

0    0    #12
08.04.2008 16:34

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам WinAPI, help!

НУ ВСТАВЬ ПОКА ПОМОЩЬ ПО ПРОГРАММЕ В ЭТО ОКНО СНАЧАЛА. ИЛИ НАЗВАНИЕ ПРОГРАММЫ.
Кстати, как будет называться платформа? RusBear? или "Mышка"?

Неактивен

0    0    #13
08.04.2008 16:59

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

Korwin написал:

Кстати, как будет называться платформа? RusBear? или "Mышка"?

А вот с названием все тяжко smile постараюсь определиться к бете.
А может быть конкурс провести на название для русской ИЛ-платформы?? smilesmilesmile

Неактивен

0    0    #14
08.04.2008 23:06

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Знатокам WinAPI, help!

ASBer написал:

А вот с названием все тяжко smile постараюсь определиться к бете.
А может быть конкурс провести на название для русской ИЛ-платформы?? smilesmilesmile

Предлагаю "Велосипед 1.0"

Неактивен

0    0    #15
09.04.2008 08:55

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

Nex написал:

Предлагаю "Велосипед 1.0"

До 1.0 еще ой как далеко smile
А по багу никаких мыслей больше нет?

Неактивен

0    0    #16
09.04.2008 10:45

noname
Участник (+36, -9)
Зарегистрирован: 04.04.2008
Сообщений: 729

noname

Re: Знатокам WinAPI, help!

пока ещё рано самодельные парсеры велосипедами называть

в РТАДС-е хотя и можно всё, но некоторые возможности реализуются неочевидным для атора образом

взять хотя бы тот же глюк 'дай водку бомжу' = 'дай водке бомжа'

и комментарий к этому GrAnda- я понимаю, что парсер это может, но какие неочевидные вещи должен был учеть автор! не удивительно, что вышел глюк. кроме того, что именно в этом случае не надо дублировать некоторые падежи через # ещё и надо учесть нестандартную работу с бутылкой водки в связи с тем что в РТАДС не предусмотрена возможность реализовать торговлю по-нормальному. и приходится автору изхищряться.

так что- флаг в руки платформостроителям!
побольше платформ хороших и разных!
даёшь русккую платформу!
ASBeR - так держать!

Неактивен

0    0    #17
09.04.2008 12:45

Gremour
Участник (+1)
Откуда: Беларусь
Зарегистрирован: 09.11.2004
Сообщений: 234

Re: Знатокам WinAPI, help!

Торговля для ИЛ нетипична. И при желании, на РТАДС реализуема. Как и многие эксцентричные вещи. Стандартная библиотека поддерживает стандартные объекты, которые широко используются. Писать библиотеку на все случаи жизни -- задаче нетривиальная и неблагодарная.

Неактивен

0    0    #18
09.04.2008 13:21

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам WinAPI, help!

noname написал:

так что- флаг в руки платформостроителям!
побольше платформ хороших и разных!
даёшь русккую платформу!

По-моему, уже не раз говорили, что платформ у нас хватает. Я не возражаю, против еще одной хорошей платформы, и больше всего мне нравится в работе ASBer'a то, что он ее делал молча, героически удерживаясь от рекламы и обсуждений. Тем не менее, я резко против лозунга побольше платформ хороших и разных!! И начинающих платформостроителей мне хочется лупить трубой от крейсера, пока они не отступятся от своей задумки или не доведут ее до конца. На кладбище платформ и так хватает надгробий!

Неактивен

0    0    #19
09.04.2008 13:22

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Знатокам WinAPI, help!

Торговля не так уж и редка, и трудностей больших не вызывает, если не связываться с купюрами и сдачей.   Например, есть в "окопном дне".
Нестандартна торговля тем, что может обращаться не напрямую к конечным покупаемым объектам (как в случае Любви, там автор обозвал полки водкой. Кстати, Миш, попробуй набрать "купить" в магазине:) ). Однако в стандартной библиотеке есть подобный глагол - "спросить об". Также на форуме ТАДСа где-то пылится пример "создать воздушный замок". Тоже похоже.

Неактивен

0    0    #20
09.04.2008 18:54

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Знатокам WinAPI, help!

По-моему, уже не раз говорили, что платформ у нас хватает.

Так говорят многие, но пока не появятся профессиональные платформы ориентированные на русский язык изначально, врятли народ перестанет создавать новые. lol
Korwin, а какие у нас платформы не только хорошие, но профессиональные?hmm

Неактивен

0    0    #21
09.04.2008 19:15

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам WinAPI, help!

Eten написал:

По-моему, уже не раз говорили, что платформ у нас хватает.

Так говорят многие, но пока не появятся профессиональные платформы ориентированные на русский язык изначально, врятли народ перестанет создавать новые. lol
Korwin, а какие у нас платформы не только хорошие, но профессиональные?hmm

Eten, можно узнать, что ты имеешь в виду под термином "профессиональная платформа"? Если та, которой можно профессионально зарабатывать себе на жизнь, то боюсь, увы, нет таких, но не потому, что инструменты плохи... а потому что то, для чего они служат, не является профессией в наше время.

Ловчая яма была профессиональным средством охоты на мамонтов... но нет сейчас такой профессии - охотник на мамонтов, и инструмент уже - не профессиональный, хотя рыть ее можно с применением экскаваторов, С4, лазерных дальномеров, спутникового наведения и прочих технических наворотов.

Отредактировано Korwin (09.04.2008 19:16)

Неактивен

0    0    #22
09.04.2008 19:28

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Знатокам WinAPI, help!

Мной проффесиональность в простом и нашем IF-ом понимании подразумевается, как минимум на уровне западных для английского языка, а это к примеру: Inform, TADS. Наши сущевствующие и популярные платформы, всего лишь улучшают некоторые стороны реализации, но при этом ущемляются другие аспекты.

К примеру в урке легко создать простой квест, но хороший и в длительности сюжета и посложности - это уже архитруд. ТКР - можно также создать квест, но из-за сокращений его трудно читать в исходнике. И так можно перечислять дальше, иначе говоря, каждый из нас делает ставку на определенные особенности и получает определенные минусы. Так, что на мой взгляд проффесиональная платформа - это та платформа, которая может совместить в себе все плюсы выше описанных и т.д. и минимизировать все минусы.

Это можно даже назвать идеалом всех платформ, т.к. все к этому стремятся. Так, вот и возникает вопрос, а есть ли действительно проффесионально (а может даже искуссно) написаные платформы с ориентацией на русский язык?

Неактивен

0    0    #23
10.04.2008 00:48

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 795
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Знатокам WinAPI, help!

Попробую ответить, Eten. IMHO, любую платформу можно постепенно довести до ума, если автор ей занимается, постоянно совершенствуя и оттачивая ее возможности. В свое время Гор сказал, что платформа это сообщество, и я с этим согласен. На URQ сейчас нет разработчика, но пока они были, успел сложиться коллектив авторов и игроков. В результате, думаю, появление новых энтузиастов это вопрос времени - Милена и разработка на J2me это подтверждают. QSP практически самая профессиональная платформа из менюшек. RTADS из парсерных, потому что есть активное сообщество, которое ее развивает. TKP2 имел свое сообщество, но автор прекратил им заниматься, а исходники закрыты. RINFORM жив благодаря усилиям Всеволода Зубарева. И Денис вроде вернулся. 6дней также позволяет сделать хорошую игру и может найти еще сторонников. Так вот, для ASBer'a, начавшего тему, сейчас самое главное терпеливо делать и делать свою платформу, пока на ней не напишут игры три независимых от разработчика автора. Если это случится - платформа имеет шанс

Неактивен

0    0    #24
11.04.2008 15:18

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Знатокам WinAPI, help!

Korwin написал:

Кстати, как будет называться платформа? RusBear? или "Mышка"?

Text Quest Engine прижилось как рабочее название. smile
TQE в сокращении.

Неактивен

0    0    #25
11.04.2008 16:26

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

Re: Знатокам WinAPI, help!

ASBer написал:

TQE в сокращении.

Будут путать с TGE.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru