powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как использовать АПИ функцию BitBlt() в PB10
16 сообщений из 16, страница 1 из 1
Как использовать АПИ функцию BitBlt() в PB10
    #37367982
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотел воспользоваться стандартной виндовой функцией BitBlt, а не тут то было. Залез в Global External Function и прописал:
FUNCTION boolean BitBlt(ulong hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, ulong hdcSrc, int nXSrc, int nYSrc, ulong dwRop);
А он мне в ответ мол: Error Must specify either LIBRARY or RPCFUNC.

Таким образом не все АПИ доступны из билдера? У меня 9 и 10 билдер. Есть ли возможность применить такие вот недоступные функции?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37367995
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabХотел воспользоваться стандартной виндовой функцией BitBlt, а не тут то было. Залез в Global External Function и прописал:
FUNCTION boolean BitBlt(ulong hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, ulong hdcSrc, int nXSrc, int nYSrc, ulong dwRop);
А он мне в ответ мол: Error Must specify either LIBRARY or RPCFUNC.

Таким образом не все АПИ доступны из билдера? У меня 9 и 10 билдер. Есть ли возможность применить такие вот недоступные функции?
Причем здесь АПИ недоступное?
У вас синтаксическая ошибка: в объявлении не хватает либо LIBRARY или RPCFUNC (в данном случае LIBRARY ).
И это логично. Вы ведь не думали что функцию DLL можно вызвать только по имени ф-и, не указывая имя DLL?
Идите в доку по ф-и и оттуда узнайте имя DLL и укажите в объявлении.
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368034
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, Вы категорически правы! Я увлекся копипастами и не заметил, что не указал библиотеку. Спасибо.
Тогда ещё вопрос. Как передавать в функцию параметр dwRop? В документации этот параметр выглядит так:

#define BLACKNESS 0x42
#define DSTINVERT 0x550009
#define MERGECOPY 0xC000CA
#define MERGEPAINT 0xBB0226
#define NOTSRCCOPY 0x330008
#define NOTSRCERASE 0x1100A6
#define PATCOPY 0xF00021
#define PATINVERT 0x5A0049
#define PATPAINT 0xFB0A09
#define SRCAND 0x8800C6
#define SRCCOPY 0xCC0020
#define SRCERASE 0x440328
#define SRCINVERT 0x660046
#define SRCPAINT 0xEE0086
#define WHITENESS 0xFF0062

Нужное значение перевести в десятичную систему и передать? Или лучше гдето обьявить все значения изначально, а потом передавать уже параметр?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368078
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabAnatoly Moskovsky, Вы категорически правы! Я увлекся копипастами и не заметил, что не указал библиотеку. Спасибо.
Тогда ещё вопрос. Как передавать в функцию параметр dwRop? В документации этот параметр выглядит так:

#define BLACKNESS 0x42
#define DSTINVERT 0x550009
#define MERGECOPY 0xC000CA
#define MERGEPAINT 0xBB0226
#define NOTSRCCOPY 0x330008
#define NOTSRCERASE 0x1100A6
#define PATCOPY 0xF00021
#define PATINVERT 0x5A0049
#define PATPAINT 0xFB0A09
#define SRCAND 0x8800C6
#define SRCCOPY 0xCC0020
#define SRCERASE 0x440328
#define SRCINVERT 0x660046
#define SRCPAINT 0xEE0086
#define WHITENESS 0xFF0062

Нужное значение перевести в десятичную систему и передать? Или лучше гдето обьявить все значения изначально, а потом передавать уже параметр?
Конечно объявить в виде constant ulong.
В десятичную систему придется руками переводить - в ПБ нет поддержки 16-тиричных литералов.
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368100
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, эти константы можно в апликейшене гдето обьявить, чтоб было доступно везде в проекте?
И ещё вопросик. Я так понимаю, что таким макаром вообще любые dll можно задействовать? Я напишу библиотечку на delphi и в билдере заюзаю из неё функции? Это я к чему, просто попробовать это проверить нет возможности аж до выходных, но интересно. Раньше писал библиотечки под FoxPro, но там были особенности с передачей параметра типа string. Тут есть хитрости?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368133
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем в апликейшене в Global Variables прописал:
ulong BLACKNESS = 66;
ulong DSTINVERT = 5570569;
ulong MERGECOPY = 12583114;
ulong MERGEPAINT = 12255782;
ulong NOTSRCCOPY = 3342344;
ulong NOTSRCERASE = 1114278;
ulong PATCOPY = 15728673;
ulong PATINVERT = 5898313;
ulong PATPAINT = 16452105;
ulong SRCAND = 8913094;
ulong SRCCOPY = 13369376;
ulong SRCERASE = 4457256;
ulong SRCINVERT = 6684742;
ulong SRCPAINT = 15597702;
ulong WHITENESS = 16711778;

так работает.
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368492
Фотография Raven A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jab

IMHO, засорять область global var это несколько моветон.
Создать класс, ну например const_123, обявить в нем константы (CONSTANT ulong BLACKNESS = 66 ...)
и использовать по тексту: ext_func( const_123.BLACKNESS )
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37368675
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
26.07.2011 22:37, jab пишет:

> В общем в апликейшене в Global Variables прописал:

Не превращай Globals в помойку. Создай класс и запихай в него константы
вместе с функцией BitBlt.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37369405
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем тогда эта область, если в неё ничего не писать?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37369779
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabА зачем тогда эта область, если в неё ничего не писать?
Цитата:Dim2000Не превращай Globals в помойку
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37371535
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё раз подскажите, что с классом делать? Создал класс cls01 в котором в конструкторе написал все
constant ulong BLACKNESS = 66;
и так далее.
Потом нужно гдето вызывать метод конструктора этого класса или как пользоваться? Что дальше?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37372573
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabЕщё раз подскажите, что с классом делать? Создал класс cls01 в котором в конструкторе написал все
constant ulong BLACKNESS = 66;
и так далее.
Потом нужно гдето вызывать метод конструктора этого класса или как пользоваться? Что дальше?

Step by step:
1. Создать невизуальный объект, например nvo_bitbit. Можно сказать объекту, что он Autoinstantiate, это позволит в дальнейшем сократить код на одну строчку
2. Объявить константы как instance variables
Код: plaintext
constant ulong BLACKNESS =  66 ;
и так далее. BTW, вы слышали что-нибудь насчет области видимости переменных?
3. Объявить функцию как local external function
4. (Опционально) Обернуть вызов внешней функции функцией/функциями объекта

5. В нужном месте создать экземпляр объекта из п.1.
Код: plaintext
1.
2.
nvo_bitbit ln_myObj
//В случае, если не выставлен флаг AutoInstantiate
ln_myObj = CREATE nvo_bitbit
6.Вызвать объявленную в п.3 или 4 функцию, передать ей правильные параметры.
...
???Наслаждаемся результатом.
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37372980
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99, в качестве невизуального обьекта подойдет просто класс? Компанент, что цветные треугольнички и кружочки. И с областью видимости не понятно пока, если можно разьяснить?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37375309
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabPL99, в качестве невизуального обьекта подойдет просто класс? Компанент, что цветные треугольнички и кружочки.
Во-во, именно он
jabИ с областью видимости не понятно пока, если можно разьяснить?Переменные, объявленные в скрипте события constuctor, не видны за пределами кода, обрабатывающего это событие. Локальные они. В отличие от переменных экземпляра, которые имеют модификаторы доступа (по умолчанию public) и живут на протяжении жизни объекта.
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37375572
jab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога. Спасибо! С переменными разобрался кажется. Просто привык к FoxPro обьявлять в ручную область видимости ключевыми словами типа Public, Local и т.д.
Ещё вопросец. В FoxPro я очень полюблял макроподстановки. Типа в строке собирал код нужны по условиям, а потом выполнял его в нужный момент. Билдер вроде тоже ведь скриптовый и хотелось бы иметь такую же возможность макроподстановой. Есть возможность?
...
Рейтинг: 0 / 0
Как использовать АПИ функцию BitBlt() в PB10
    #37376572
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jabЕщё вопросец. В FoxPro я очень полюблял макроподстановки. Типа в строке собирал код нужны по условиям, а потом выполнял его в нужный момент. Билдер вроде тоже ведь скриптовый и хотелось бы иметь такую же возможность макроподстановой. Есть возможность?Зависит от...
STFF
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как использовать АПИ функцию BitBlt() в PB10
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]