Var HBitmap=Create_Image(300,300) 'создаем обычный битмап ImageStartDraw(HBitmap) 'начинаем рисование TextDraw(30,50,"FreeBasic The Best",,&hff) StopDraw 'заканчиваем рисование
Var MainGpBitmap=Create_ImageA(300,300) 'создаем прозрачный битмап Var GpBitmap=CreateGpBitmapFromHBitmap(HBitmap) 'создаем GDI+ битмап из Hbitmap ImageStartDrawA(MainGpBitmap) 'начинаем рисование с помощью GDI+ ImageDrawA(GpBitmap,0,0) 'рисуем наш непрозрачный битмап For y As Integer=1 To 300 'далее в циклах заменяем все непрозрачные For x As Integer=1 To 300 'пикселы прозрачными If GetPixA(x,y)=&hff000000 Then SetPixA(x,y,&h00000000) EndIf Next Next
После удачной сборки модуля (C:\FB\Compiler1.06.0\fbc -g -s console "CreateGpBitmapFromHBitmap.bas") пытаюсь запустить с отладчиком. Отладчик при старте выдает такие ошибки, File: c\fb\compiler1.06.0\inc\win\shobjidl.bi too large (886142>700000) not loaded File: c\fb\compiler1.06.0\inc\win\mshtmlc.bi too large (2513411>700000) not loaded затем загружает кучу табов и останавливается на вкладке window9.bi (AS): Код. . . ' is it a exe build ? #if __FB_OUT_EXE__ or __FB_OUT_DLL__
#inclib "window9"
InitCommonControls( ) Dim InitCtrlEx As INITCOMMONCONTROLSEX InitCtrlEx.dwSize = sizeof(InitCommonControlsEx) InitCtrlEx.dwICC = ICC_STANDARD_CLASSES InitCommonControlsEx(@InitCtrlEx)
#else ' no must be a lib build declare things for internal use only . . .
С другими программами вроде все нормально, на всякий случай - Debugger for FreeBASIC (only Win32/64) V 2.93/09-05-2018 (С) L.GRAS sarg@aliceadsl.fr Подскажите, в чем тут проблема?
Сообщение отредактировал Uil - Пятница, 01.03.2019, 23:24
FbDEbugger и раньше не сильно любил работать с GDI\GDI+ , постоянно высвечивая различные "сюрпризы". Я попробовал тоже последнюю версию отладчика с данным примером , но скомпилированным с помощью компилятора 1.05 . Все загружается в отладчик без проблем , однако не работает отладка должным образом.
Мне жаль , но данные вопросы здесь не решатся. Отладчик слишком объемная и сложная программа. Я уверен , что даже автор (SARG) долго будет разбираться с проблемой , что говорить о нас?
Пожалуйста , если не сложно, размести данную проблему на оф. странице отладчика: https://www.freebasic.net/forum/viewtopic.php?f=8&t=13935 . При этом нужно будет разместить архив с исходным кодом и необходимыми файлами для компиляции (библиотеки), поскольку SARG может не иметь на своем компьютере нужные библиотеки. Чтобы дело было быстрее , дополнительно можно написать ему на мыло. Насколько я помню, он всегда был очень отзывчивый человек , так что если он не сильно занят , то думаю данную проблему рассмотрит. Или если в лом, то скажи об этом, тогда я сам обращусь с этой проблемой.
Если время не терпит , то можно отлаживать с помощью GDB (с ним проблем не будет). Правда это не так удобно, все таки консоль... Либо попробовать Insight. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
И что у тебя работает? У меня пример из 1 поста как не отлаживался, так и не отлаживается. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
1) какая операционная система 2) какая версия window9 моя или Джоши . У Джоши адаптировано под win64 . 3) какой компиль ты используешь , я уже понял. Не мог бы ты попробовать с компилятором 1.05 ? Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
1) какая операционная система 2) какая версия window9 моя или Джоши . У Джоши адаптировано под win64 . 3) какой компиль ты используешь , я уже понял. Не мог бы ты попробовать с компилятором 1.05 ?
Фиг знает че такое. Тоже попробовал на win10 , ничего не поменялось. Переходить на 1.06 пока не могу, эта версия мало тестировалась. А у меня сейчас проекты в работе , своих багов хватает , а если еще добавятся баги новой версии компилятора , то вообще край... Написал SARG(у) , может что-то из этого выйдет. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
Я сейчас уже точно не вспомню. В памяти отложилось , что на windows XP без этого куска кода половина гаджетов не работает (такие как treewview , listview и пр. common controls). Когда я начинал писать либу, я это делал еще на WinXP и большей частью для нее. Рубить поддержку Windows XP даже сейчас в 2019 не хочу.
В любом случае ты прав, без этого куска кода отладчик нормально функционирует. Это хорошая новость, поскольку теперь я знаю как можно отлаживать код , созданный при помощи моей либы. Спасибо! Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
haav, а вот такой вопрос. Собрал libwindow9.a с отладочной инфой. При отладке не находит используемые исходные файлы библиотеки, приходится нужные файлы копировать в текущую папку отладки. По-другому никак нельзя? И вот ещё (ссылка на MS):
Цитата
замечания В версии 5.x Comctl32.dll только классы Windows 95 (ICC_WIN95_CLASSES) могут быть зарегистрированы через InitCommonControls . Программы, которые требуют дополнительных общих классов управления, должны использовать функцию InitCommonControlsEx . В версии 6.0 Comctl32.dll и выше, InitCommonControls ничего не делает. Приложения должны явно регистрировать все общие элементы управления через InitCommonControlsEx.
Посмотрел в XP, там версия 6.0
Сообщение отредактировал Uil - Вторник, 05.03.2019, 00:43
Собрал libwindow9.a с отладочной инфой. При отладке не находит используемые исходные файлы библиотеки, приходится нужные файлы копировать в текущую папку отладки.По-другому никак нельзя?
Я не видел в FBDEBUGGER опции "указать путь для заголовков". А что мешает компилить либу прямо рядом с исходниками , пока идет отладка?
Цитата
замечания В версии 5.x Comctl32.dll только классы Windows 95 (ICC_WIN95_CLASSES) могут быть зарегистрированы через InitCommonControls . Программы, которые требуют дополнительных общих классов управления, должны использовать функцию InitCommonControlsEx . В версии 6.0 Comctl32.dll и выше, InitCommonControls ничего не делает. Приложения должны явно регистрировать все общие элементы управления через InitCommonControlsEx. Посмотрел в XP, там версия 6.0
Так это ничего не меняет. В функции InitCommonControls , насколько я понял , в новых версиях винды стоит заглушка в виде "RETURN". Проблема то с отладчиком возникает из-за InitCommonControlsEX. В принципе можно заюзать макрос _WIN32_WINNT в window9.bi, это решит проблему отладки для систем выше Windows XP и в то же время не сломает функциональность библиотеки на XP. Опять же проблема есть только на компиляторах ниже версии 1.06 . Хотелось бы проверить , как работает отладчик с данным примером на Windows xp при использовании 1.06 , но это туева куча времени. Надо доставать и подключать старый комп , виртуалка вряд ли внесет уверенность. Возможно когда нибудь, если не забуду , я это проверю. Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
Спасибо за тест и информативный ролик. Что-то видать покрутили в компиляторе 1.06
Кстати пролетаю я с макросом _WIN32_WINNT . У меня на Windows 7 он возвращает &h502 , хотя должен по идее возвращать &h601 ссыль на оф. документацию . Просто нет слов... Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…