|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
Хотел воспользоваться стандартной виндовой функцией 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 билдер. Есть ли возможность применить такие вот недоступные функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 18:40 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
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 и укажите в объявлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 18:47 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
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 Нужное значение перевести в десятичную систему и передать? Или лучше гдето обьявить все значения изначально, а потом передавать уже параметр? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 19:14 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
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-тиричных литералов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 20:20 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, эти константы можно в апликейшене гдето обьявить, чтоб было доступно везде в проекте? И ещё вопросик. Я так понимаю, что таким макаром вообще любые dll можно задействовать? Я напишу библиотечку на delphi и в билдере заюзаю из неё функции? Это я к чему, просто попробовать это проверить нет возможности аж до выходных, но интересно. Раньше писал библиотечки под FoxPro, но там были особенности с передачей параметра типа string. Тут есть хитрости? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 20:51 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
В общем в апликейшене в 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; так работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2011, 21:37 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
jab IMHO, засорять область global var это несколько моветон. Создать класс, ну например const_123, обявить в нем константы (CONSTANT ulong BLACKNESS = 66 ...) и использовать по тексту: ext_func( const_123.BLACKNESS ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 10:43 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
26.07.2011 22:37, jab пишет: > В общем в апликейшене в Global Variables прописал: Не превращай Globals в помойку. Создай класс и запихай в него константы вместе с функцией BitBlt. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 12:22 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
А зачем тогда эта область, если в неё ничего не писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 17:23 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
jabА зачем тогда эта область, если в неё ничего не писать? Цитата:Dim2000Не превращай Globals в помойку ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 21:27 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
Ещё раз подскажите, что с классом делать? Создал класс cls01 в котором в конструкторе написал все constant ulong BLACKNESS = 66; и так далее. Потом нужно гдето вызывать метод конструктора этого класса или как пользоваться? Что дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 18:20 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
jabЕщё раз подскажите, что с классом делать? Создал класс cls01 в котором в конструкторе написал все constant ulong BLACKNESS = 66; и так далее. Потом нужно гдето вызывать метод конструктора этого класса или как пользоваться? Что дальше? Step by step: 1. Создать невизуальный объект, например nvo_bitbit. Можно сказать объекту, что он Autoinstantiate, это позволит в дальнейшем сократить код на одну строчку 2. Объявить константы как instance variables Код: plaintext
3. Объявить функцию как local external function 4. (Опционально) Обернуть вызов внешней функции функцией/функциями объекта 5. В нужном месте создать экземпляр объекта из п.1. Код: plaintext 1. 2.
... ???Наслаждаемся результатом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 12:40 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
PL99, в качестве невизуального обьекта подойдет просто класс? Компанент, что цветные треугольнички и кружочки. И с областью видимости не понятно пока, если можно разьяснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2011, 15:03 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
jabPL99, в качестве невизуального обьекта подойдет просто класс? Компанент, что цветные треугольнички и кружочки. Во-во, именно он jabИ с областью видимости не понятно пока, если можно разьяснить?Переменные, объявленные в скрипте события constuctor, не видны за пределами кода, обрабатывающего это событие. Локальные они. В отличие от переменных экземпляра, которые имеют модификаторы доступа (по умолчанию public) и живут на протяжении жизни объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 14:54 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
Ога. Спасибо! С переменными разобрался кажется. Просто привык к FoxPro обьявлять в ручную область видимости ключевыми словами типа Public, Local и т.д. Ещё вопросец. В FoxPro я очень полюблял макроподстановки. Типа в строке собирал код нужны по условиям, а потом выполнял его в нужный момент. Билдер вроде тоже ведь скриптовый и хотелось бы иметь такую же возможность макроподстановой. Есть возможность? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2011, 16:47 |
|
Как использовать АПИ функцию BitBlt() в PB10
|
|||
---|---|---|---|
#18+
jabЕщё вопросец. В FoxPro я очень полюблял макроподстановки. Типа в строке собирал код нужны по условиям, а потом выполнял его в нужный момент. Билдер вроде тоже ведь скриптовый и хотелось бы иметь такую же возможность макроподстановой. Есть возможность?Зависит от... STFF ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2011, 11:46 |
|
|
start [/forum/topic.php?fid=15&fpage=18&tid=1335669]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 283ms |
total: | 412ms |
0 / 0 |