|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
Народ, помогите витащить переменную fr!!!!!! Как мне перевести с VisualBasic на VFP нижеследующий код? Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type CharRange cpMin As Long cpMax As Long End Type Public Type FormatRange hdc As Long hdcTarget As Long rc As RECT rcPage As RECT chrg As CharRange End Type Dim fr As FormatRange fr.hdc = hdc fr.hdcTarGet = Printerhdc fr.chrg.cpMin = NextCharPos fr.chrg.cpMax = -1 fr.rc = rcDrawTo fr.rcPage = rcPage SendMessage(rtf.hwnd, EM_FORMATRANGE, True, fr) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2003, 13:24 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
Нужен только fr ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2003, 13:34 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
Вот например: *** Число в строку FUNCTION IntToStr LPARAMETERS nInt RETURN CHR(FLOOR(nInt%256)) + ; CHR(FLOOR(nInt/256%256)) + ; CHR(FLOOR(nInt/(256**2)%256)) + ; CHR(FLOOR(nInt/(256**3))) ENDFUNC fr = IntToStr(hdc) + IntToStr(Printerhdc) + IntToStr(NextCharPos) + IntToStr(-1) + IntToStr(rcDrawTo) + IntToStr(rcPage) SendMessage(rtf.hwnd, EM_FORMATRANGE, True, fr) *** fr - объяви как строку ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2003, 13:44 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
fr - как строку? Вот описание API функции SendMessage: function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint; Не надо ли потом делать чтото вроде StrToInt? Интересно, если тип будет посложнее, например Public Type FormatRange hdc As Long hdcTarget As Word rc As String rcPage As Long End Type Что тогда? Просто, если можите объясните как ето делать для любых структур. Что озачает CHR(FLOOR(nInt/256%256)) ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2003, 14:10 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
С API в Фоксе немного трудновато, особенно если функция принимает структуру, но пока все получалось. Принцип такой: Функции передается область памяти, а не сами переменные или структуры. Необходимо правильно создать эту область. Например число 25 в двоичном виде выглядит так: 0001 1001 - как 2 байта 0000 0000 0001 1001 - как 4 байта а строка полученная с помощью IntToStr(25) в двоичном виде будет выглядеть так же - 0000 0000 0001 1001 то есть все структуры превращаю в строки Ну а в сложных структурах то же самое. Например [Наша строка] = IntToStr(число) + [длина строки Х] + [строка Х] Ну а с TRUE - FALSE #DEFINE TRUE 0x0001 #DEFINE FALSE 0x0000 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2003, 14:39 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
IntToStr(-1) не работает, как и для прочих отрецательних чисел. Как поступить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2003, 18:50 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
Cоздай FLL и не мучайся. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 09:37 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
И шо тогда? Всё равно мне прийдется передавать параметры. Если функция хочет видить структуру, то надо дать ей структуру. Не так ли? Если не так, то как тогда будет виглядеть FLL на примере функции SendMessage: function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint; (DECLARE INTEGER SendMessage IN user32 INTEGER hWnd, INTEGER Msg, INTEGER wParam, String lParam - так делал я) lParam - это структура (описание в первом сообщении (FormatRange)). И как потом вызвать этот SendMessage? Буду очень благодарен, на API функциях можно сделать много интересных вещей... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 12:26 |
|
Структуры в FOXе?
|
|||
---|---|---|---|
#18+
И шо тогда? 1. Тогда ты избавишься от "гемороя" преобразования типов данных и составления блока памяти ссылку на котороый тебе нужно запихнуть в функци и разбора буфера результатов для "сложных" функций. 2. Сможешь работать со структурами элементы которой тоже представляют собой ссылку на структуру. 3. Вот чего-чего, а при использовании FLL проблем с передачей параметров нет. Ты же знаешь какое сообщение будешь передавать ? - Знаешь. параметры которые нужно запихать в элементы структуры знаешь ? Знаешь. Тогда какие проблемы? Код твой будет выглядеть примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Всё равно мне прийдется передавать параметры. Если функция хочет видить структуру, то надо дать ей структуру. Не так ли? Конечно. Только тут стоит вопрос, не ЧТО, а КАК. Если не так, то как тогда будет виглядеть FLL на примере функции В простейшем случе можешь сделать так : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
/* Если хочешь передавать больше параметров то переопредели связку в FoxInfo. Устройство к которому надо доставить и конечное устройство, под которое происходит форматирование можешь определить тут. Вообщем вариантов в таком случе много. Все. И вообще , можешь при таком подходе получить все что хочешь от системы, что не может фокс. */ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 13:39 |
|
|
start [/forum/topic.php?fid=41&msg=32196178&tid=1598100]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 427ms |
0 / 0 |