Раді Вас бачити! » Увійти » Створити новий профіль
28641
15 листопада 2010 19:18:00
Papa Innokenty VII Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 >  
 > > Но может есть лучшие варианты?
 >  
 >  
 > смотря зачем захватывать екран...
 > если просто авишку записать, то фули велосипед, есть куча софта и куча примеров
 > кода под VC6.

 
 Это меня как раз интересует. Но видите ли какое дело, Папа, в куче тяжело ориентироваться. Особенно человеку, который в этой теме "плавает".
 
 > но если надо захватить свой екран и транслировать свои действия на аудиторию, то
 > лучше заюзать хвранцузський нетоп скул [www.netop.com]
 
 Не свои действия, а действия программы. Мы програмно генерируем смену картинки в Пикчебоксе с разными эффектами перехода и делаем из этого "кино". Сторонней программой это делать тоже можно, но удобнее делать встроенными процедурами.
28642
15 листопада 2010 18:56:00
Уточню вопрос. VFW (Video For Windows) всё еще модная и актуальная штука или об ней пора забыть? Спрашиваю потому, что у меня есть примеры, которые работают с этой... Библиотекой или хрен его знает, что оно такое... Но это было модно лет 10 назад.
28643
15 листопада 2010 18:39:00
hornet Написав:
 -------------------------------------------------------
 > Do you know the acronym "blackjack and bithes" ?  :)  
 
 Нет. Я даже не знаю, что такое "акроним".
28644
15 листопада 2010 18:34:00
Во первЫх строках хочу выразить благодарность всем программистам, которые меня консультировали. Ваши советы и даже простое общение с вами мне очень помогли. Мой маленький прожектег готов. Но как всегда... Хочется еще более улучшить. И добавить фичу видеозахвата (или как оно там называется по правильному?), которая бы давала на выходе AVI файл в котором было бы "заснято" всё, что делается в PictureBox'e. У меня пока сложился такой план - записать серию файлов-битмэпов и из них попытаться слепить "кино". В крайнем случае можно воспользоваться для этого услугами VirtualDub'a.  
 Но может есть лучшие варианты?
28646
9 листопада 2010 23:01:00
Прол, я спать иду. Всё.
28647
9 листопада 2010 22:56:00
Прол Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > > Но копирует не всё за раз, а попиксельно. Этим
 > > достигается эффект плавной смены картинки.  
 >  
 > Опиши словами свой алгоритм "эффекта плавной смены картинки", поэалуйста :о)
 
 
 Словами? Новая картинка сменяет старую от краев экрана к центру. "Коробочкой". Есть вариант "кружочком" .
28648
9 листопада 2010 22:53:00
SlavRedko Написав:
 -------------------------------------------------------
 > Нет плохого языка программирования, есть плохие программисты
 
 Эээ... Ну каг сказать... Делать пользовательский интерфейс на ВижуалСи - извращенный мазохизм. Но есть книжки в которых описывается этот процесс... Я попробовал разок и охуел. "Мастер MFC" вывалил мне "заготовку с кучей мутнейшего кода... Обработка кнопки всего лишь!  
 Я не понимаю зачем это нужно когда есть простой и легкий дао Вижуал Бейсика. И плевать кто и что по этому поводу думает, буду делать как мне удобно. Тем более, что результат одинаковый.
28649
9 листопада 2010 22:43:00
Sandboxer Написав:
 -------------------------------------------------------
 >  
 > Ви не те пробували.
 > bitblt це вроді промальовування картинки на кнопці. Воно працюватиме однаково.
 > Ви краще спробуйте низькорівенневі продедури на апі і порівняйте з
 > високорівенними.
 
 Нет. BitBlt копирует из одного контекстного устройства в другое. У меня она копирует из буфера в памяти в PictureBox. Но копирует не всё за раз, а попиксельно. Этим достигается эффект плавной смены картинки. У меня пять разных эффектов придумано и прописано. А с ДЛЛ мне давно хотелось розобраться, как из нужно изготавливать. На случай если вдруг нужно будет выйти за пределы Бейсика. Сама технология была интересна. А тут представился случай. Ну и заодно была надежда получить более быстрый код. Но фокус не получилсо. Работает одинаково быстро (или медленно...).
28650
9 листопада 2010 22:27:00
Sandboxer Написав:
 -------------------------------------------------------
 >  
 > а ви через апі спробуйте
 
 Если бы вы прочитали чуть дальше ветку, то увидели бы исходный код ДЛЛки. Там вызывается функция АПИ BitBlt. Аналогичня процедура у меня на Бейсике написана. Собственно, я ее тупо перевел с Бейсика на Си. И сравнил скорость выполнения. Этому открытию и была посвящена ветка изначально. Эт потом уже тут началость...  
 
 Так что спробував уже.
28651
9 листопада 2010 21:44:00
ЮАР Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > > Эти велосипедисты на турстоянку "Джурла" едут?
 >  
 > Нет, в противоположную сторону-Долина Приведений, Лучистое, Лаванда.
 
 
 Чет я не понял, как они через "привидения" будут пробираться. Тропинка там достаточно крута местами и , главное, разрушающийся конгломерат (горная порода из которой сложена Димерджи) делает ходьбу там очень неприятным делом. Как будто шарики под ногами. Чувствуешь себя коровой на льду. А они еще и велики будут на себе волочить... Не понял я этого юмора.
28652
9 листопада 2010 20:34:00
IhorO Написав:
 -------------------------------------------------------
 >  
 > пс. дискусії з вами на цю тематику не продовжуватиму. позбудетися наффізму - тоді
 > може й буде не так, але не на цій площадці.
 
 Я  не набивался и не набиваюсь к Вам в собеседники. Будете проходить мимо, проходите мимо.
28653
9 листопада 2010 20:23:00
IhorO Написав:
 -------------------------------------------------------
 > TC,  
 > сходили б на якийсь більш-менш професійний програмерський форум, хоча би той же
 > rsdn.ru, і продублювали б свій постинг.  
 > Думаю, по популярності там переплюнули б Наффі, який на фупі.
 
 
 Не надо меня посылать, я сам посылать умею.
28654
9 листопада 2010 20:20:00
H.Kropp Написав:
 -------------------------------------------------------
 >  
 > ну йому хтось десь сказав, що ся швидша за басік, просто швидша і все
 
 Это в каждой книжке по Си написано. Что Си - быстрый! Мамой клянусь!  :D  
 
 Ну интересно было проверить... Кроме того, Бейсик замечателльно хорош и удобен когда нужно сделать интерфейс. Надеюсь, с этим никто спорить не станет? А вот "движок"... Если его нельзя сдалать на Бейсике, мы сделаем его на Си! И таким образом совместим приятное с полезным.
28655
9 листопада 2010 19:38:00
ZVIAD Написав:
 -------------------------------------------------------
 > > Бо Джурла зараз і так стала однією з найбрудніших стоянок.
 
 Да. Жуткая помойка. Но туда колесная дорога есть, вот народ на жыпах и ездит и гадит.
28656
9 листопада 2010 19:36:00
ЮАР Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > > ЮАР, пошли в мае в поход в каньон Джурлы/Алаки/Сотеры? Вы были в двух шагах от
 > него!
 > > Неужели не интересно полазить в таком местечке?
 >  
 > Поживем - увидим. Бывал я и там.
 > Там часа три - четыре ходу, и все. Сразу пляж.
 >  
 > Есть планы, как советовал товарищ, через ГКХ и с заходом в Сочи.
 > А по три раза в году меня в отпуск не пускают.

 >  
 > А вообще было бы здорово собрать кампашку людей с ФУПа, и махнуть в Крым, хотя бы на
 > выходные.
 
 Дык.... Прям  сеанс чтения мыслей на расстоянии...  :D  Хочу в августе махнуть. Если не будет попутчика, в одиночку иду. Там не страшно. Но хочу сделать восхождение на Фишт. Может это мой последний шанс.... ХЕЗ.  
 
 У меня пол отпуска в мае и пол отпуска в августе.
28657
9 листопада 2010 19:30:00
TAG Написав:
 -------------------------------------------------------
 > KM_Nemo - все это советы из пришлого!  Когда были компы тормознутые и
 > однопроцессорные.
 
 Я ж не только для себя, для людей делаю! А у людей компы могут быть очень разными. Даже гораздо более тормознутыми чем мой. Надо расчитывать на худшее.
28658
9 листопада 2010 19:27:00
Прол Написав:
 -------------------------------------------------------
 >  
 > Ну так зачем копировать попиксельно всю картинку, если можно изменить нужные
 > пикселы по своему алгоритму а потом один раз скопировать весь ректангл, хоть 1024 на
 > 768 :о)))
 > Изменил 15 пикселов один раз скопировал. Изменил 250 пикселов - один раз битблт.
 > Не нужно копировать если у тя меняется всего один пиксел. У тя же меняется
 > несколько. Вот их поменяй, а только после етово делай битблт.
 
 Да. Что-то такоя я и буду делать. Другого пути нет, похоже. Надо копировать более крупными блоками. Но к теме "Бейсик против Си" это уже не относится.
28659
9 листопада 2010 19:12:00
ЮАР, пошли в мае в поход в каньон Джурлы/Алаки/Сотеры? Вы были в двух шагах от него! Неужели не интересно полазить в таком местечке?
28660
9 листопада 2010 19:07:00
Прол Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > >       suc=BitBlt(hDistDC,x,y,1,1,hSrcDC,x,y,SRCOPY);
 >  
 > Нипоняв, ты шо копируешь по одному пикселу шоле???
 > А построить в памяти весь ректангл и потом его скопировать одной битблтшкой мона?
 
 Смысл мероприятия как раз в попиксельном выводе (можно блоками). Так делается эффект перехода из одной картинки в в другую. Ты сам советовал применить BitBlt. Забыл?  :)
28661
9 листопада 2010 18:43:00
H.Kropp Написав:
 -------------------------------------------------------
 > Басік не стільки повільний скільки зовні страшний з ідіотським синтаксисом
 > Хоча я сам колись починав з QuickBasic та Fortran IV  :)  
 
 
 Зовни он прекрасен. И невероятно удобен. И не уступает Дельфи ни в чем.
28662
9 листопада 2010 18:37:00
H.Kropp Написав:
 -------------------------------------------------------
 > коротше
 > пропоную згадати актуальне програмістське гасло: "Код - в студію!!!"   :laugh:  
 
 Даю!
 
 #include "stdafx.h"
 
 BOOL APIENTRY DllMain( HANDLE hModule,  
                        DWORD  ul_reason_for_call,  
                        LPVOID lpReserved
                 )
 {
     return TRUE;
 }
 
 int _stdcall sum(int x , int y)
 {
 return x+y;
 }
 
 void _stdcall closew(HDC dc, HDC PictDC, int W, int H, int Delay)
 {
   const int SRCOPY=0xCC0020;
   int HalfHeight,i;
   int wid,hgt;
   int a,x,y,wait;
   int suc;
   HDC hDistDC,hSrcDC;
   
   wid=W;
   hgt=H;
   hDistDC=PictDC;
   hSrcDC=dc;
   HalfHeight=hgt/2;
   wait=Delay;
 
    for(i=0;i<=HalfHeight;i++)
  {
    y=i;
    for(x=i;x<=wid-i;x++)  
       suc=BitBlt(hDistDC,x,y,1,1,hSrcDC,x,y,SRCOPY);
    //for(a=1;a<=wait;a++);
    x=wid-i;
    for(y=i;y<=wid;y++)  
       suc=BitBlt(hDistDC,x,y,1,1,hSrcDC,x,y,SRCOPY);
    //for (a=1;a<=wait;a++);
    y=hgt-i;
    for(x=wid-i;x>=i;x--)  
       suc=BitBlt (hDistDC,x,y,1,1,hSrcDC,x,y,SRCOPY);
    //for(a=1;a<=wait;a++);
    x=i;
    for(y=hgt-i;y>=i;y--)  
       suc=BitBlt (hDistDC,x,y,1,1,hSrcDC,x,y,SRCOPY);
    //for (a=1;a<=wait;a++);
  }
 
 
  //suc=BitBlt (hDistDC,0,0,wid,hgt,hSrcDC,0,0,SRCOPY);
 }
28663
9 листопада 2010 18:36:00
H.Kropp Написав:
 -------------------------------------------------------
 > я одразу тобі сказав, ще в тій темі про ДЛЛ, що помітного виграшу не отримаєш
 > не уявляю чим можна оптимізувати цикл як такий
 
 
 Вы были абсолютно правы, сэррр!!! А вот интересно, выполнение математических функций, тоже в цикле, можно ли ускорить, переведя их на Си?
28664
9 листопада 2010 18:33:00
Чупа-чупс Написав:
 -------------------------------------------------------
 >  
 > почему ты думал ускорить крутение циклов посредством загоняния их в длл? токо
 > потому шо эта длл написана на си?
так на бейске.. ну я не знаю как он там устроен,
 > этот говнобейсик, но думаю что некрософт вполне нормально интегрировал всё это
 > дерьмо в винду, поэтому надежды були марними.
 
 именно для этого. Везде Си рекламируется как "быстрый" язык. А Бейсик как медленный. Ну и где эта быстрота? Нету!  
 
 > а цель длл - вовсе не в ускорении, а в унификации и возможностях расширения
 > функциональности программ.
 
 Не ну... Написать всю программу на Си я бы не смог. МФС и прочая лабуда.... Это не для моего слабого здоровья. Но внедрить кусочк - можно. Он жыж скомпилирован и прочее такое...  
   
 > а для распараллеливания и ускорения надо юзать треды - потоки.
 
 Не, не стоит моя овчинка такой выделки. Я сделал для себя небольшое открытие и сообщаю его обчественности. И всё.
28665
9 листопада 2010 18:25:00
ЮАР, у меня будет к вам деловое предложение. Опосля выскажу.
28666
9 листопада 2010 18:23:00
Эти велосипедисты на турстоянку "Джурла" едут?
28667
9 листопада 2010 18:20:00
legionary Написав:
 -------------------------------------------------------
 > просто твой выигрыш сожрали накладные на подключение  ;)  
 
 нет. см выше.
28668
9 листопада 2010 18:19:00
Чупа-чупс Написав:
 -------------------------------------------------------
 >  
 > дядя, ты не путай длл и вызовы функция - это сильно разные вещи. длл ващета всегда
 > грузится дольше, но там совсем другие плюсы.
 
 Давай без хамства, я ведь тоже умею... А по теме, в функции из ДЛЛки последовательно крутилось 4 цикла внутри пятого цикла. Это и было самым долгим процессом, который я надеялся ускорить. И ни-фи-га.
28669
9 листопада 2010 18:09:00
Карочи! Разобрался с писанием ДЛЛек и выяснил интересную штуку - никакого существенного выигрыша в скорости эта алхимия не даёт!  
 ДЛЛка писалась на Вижуал Си и делался ее вызов из Вижуал Бейсика. И тут же рядом аналогичная функция на Бейсике. Легко можно подключать то одну, то другую и видеть, что разници сколь нибудь ощутимой нэма!
 
 Вот вам и "быстрый" Си...
28670
9 листопада 2010 11:55:00
Водопад Джурла в июле.  
 
 http://s46.radikal.ru/i113/1011/2e/f307432e56bc.jpg
28671
9 листопада 2010 11:40:00
Готов занять вакансию бытовика-флудера. Имею большой опыт.  :shuffle:
28672
9 листопада 2010 11:38:00
Идеологическая диверсия, бля буду.
28673
9 листопада 2010 11:35:00
 :D  
 
 Я сужу по тому, что у нас сейчас "ташкент" и "тропики". А в Канаде должно быть наоборот!
28674
8 листопада 2010 17:49:00
SlavRedko Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > > Слава, откуда взялся в проекте файл .def? Как его вообще получают? Пишут ручками? И
 > > критично ли его отсутствие для работы библиотеки? Вот этого я не понял.
 >  
 > Он создается автоматычно если вы используете  MFC DLL Wizard. Ну или ручками его создать
 > можно и ссылку в проекте добавить.
 >  
 > Ну то что его отсутствие критично вы должны были сами догадаться - он как раз и
 > описывает точки входа в вашу dll, которая является просто контейнером для набора
 > функций.
 
 > Для того что бы ваша программа на бейсике могла использовать эту dll вне проекта
 > вам нужно ее (dll) зарегистрировать с использованием regsvr32 (во всяком случае так было
 > когда то)

 >  
 Уже не надо. В Бейсике есть оператор Declare... В общем-то он по большей части используется с функциями АРІ, которые тоже написаны на С... Но нет такого закона, что нельзя было писать свои ДЛЛ-ки и вызывать их функции из Бейсика.  
 
 > А зачем вам этот мастодонт C++? Я последний раз писал на нем больше 10 лет назад
 
 А мне интересно, сильно ли ускорится выполнение программы если часть кода, критичного ко времени исполнения (длинные вложенные циклы), будет написано и откомпилировано на С.
28675
8 листопада 2010 17:29:00
H.Kropp Написав:
 -------------------------------------------------------
 > KM_Nemo Написав:
 > -------------------------------------------------------
 > > Слава, откуда взялся в проекте файл .def? Как его вообще получают? Пишут ручками? И
 > > критично ли его отсутствие для работы библиотеки? Вот этого я не понял.
 >  
 > це здається встановлюється в налаштуваннях проекту
 
 Я тож так думаю, но пока не обнаружил этого мистического места, в котором делаются настройки. И потом... Что это за тупой "мастер", я ему указывал, что проект - ДЛЛ... Он должен был выродить все сопутствующие файлы, если они так нужны.  
 
 >  
 > просто ДЛЛ можна програмувати кількома способами - легко заплутатися
 
 >  
 > візьми за зразок мій код - стовідсотково працює при використанні в СРР-прогах
 > має працювати і для BASIC
 
 А что он делает, этот код? Я нихрена не понял  :D
28676
8 листопада 2010 17:05:00
Слава, откуда взялся в проекте файл .def? Как его вообще получают? Пишут ручками? И критично ли его отсутствие для работы библиотеки? Вот этого я не понял.
28677
8 листопада 2010 17:02:00
Вот исходный код ДЛЛ-ки:
 
 // example1.cpp : Defines the entry point for the DLL application.
 //
 
 #include "stdafx.h"
 
 BOOL APIENTRY DllMain( HANDLE hModule,  
                        DWORD  ul_reason_for_call,  
                        LPVOID lpReserved
                 )
 {
     return TRUE;
 }
 
 int _stdcall sum(int x , int y)
 {
 return x+y;
 }
 
 Функция возвращает в бейсик сумму двух чисел, которые мы засылаем в нее из бейсика же.
28678
8 листопада 2010 16:59:00
H.Kropp Написав:
 -------------------------------------------------------
 > яким способом ДЛЛ лінкується до програми?
 > статично чи динамічно
 > в першому випадку повинна бути ще статична ліба імпорту
 
 поняния не имею каким. подозреваю, что динамическим.  :)  
 я декларирую функцию из самописной ДЛЛ точно также, как декларирую функции АРI , если я из использую. И в общем-то всё работает.
28679
8 листопада 2010 16:52:00
Dingo Написав:
 -------------------------------------------------------
 > Попробуйте подключить эту DLL библиотеку.
 > Project--References--Browse и указать путь на DLL библиотеку
 > После этого скомпилировать и запустить вызывающую программу
 
 
 Файл ДЛЛ программа-клиент находит, она не находит точку входа.
28680
8 листопада 2010 16:50:00
Внимательно сравнил оба проекта и обнаружил, что в том, что работает присутствует файлик с расширением .def Откуда он взялся и не тут ли собачка порылась?
 
 LIBRARY example1
 
 EXPORTS
 
 sum   @1
 
 вот такое у него содержимое.

Повна версія