Форум » GUI » GetClientRect » Ответить

GetClientRect

Avf: Что изменилось что перестал транслироваться следующий пример : #include "minigui.ch" Function Main Local z, tb SET NAVIGATION EXTENDED DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 600 ; HEIGHT 400 ; VIRTUAL WIDTH 1300 ; VIRTUAL HEIGHT 2800 ; TITLE 'AutoScroll Demo (PageDown, PageUp)' ; MAIN ON KEY PRIOR ACTION NextPriorPage(0) ON KEY NEXT ACTION NextPriorPage(1) END WINDOW For z = 1 to 20 tb := "TB_" + ltrim(str(z,2)) @ z * 30,10 TextBox &tb; of Form_Main; VALUE ltrim(str(z,2)) ; ON GOTFOCUS AutoScroll(); WIDTH 100 HEIGHT 25 Next CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main Return Nil #define WM_VSCROLL 277 // 0x0115 #define SB_PAGEDOWN 3 #define SB_PAGEUP 2 *--------------------------------------------------------* Function AutoScroll() *--------------------------------------------------------* LOCAL nVScrollValue, controlRow, newPos, hWnd, clientHeight, aPos, nOffset hWnd := getFormHandle(_HMG_THISFORMNAME) aPos := GetClientRect(hWnd) clientHeight := aPos[3] - aPos[1] - GetHScrollBarHeight() nVScrollValue := GetScrollPos(hWnd, 1) controlRow := GetProperty ( _HMG_THISFORMNAME, _HMG_THISCONTROLNAME, 'ROW' ) nOffset := GetProperty ( _HMG_THISFORMNAME, _HMG_THISCONTROLNAME, 'HEIGHT' ) If controlRow >= clientHeight + nVScrollValue // Down NewPos := controlRow - nOffset SetScrollPos ( hwnd , 1 , NewPos , 1 ) SendMessage( hWnd, WM_VSCROLL, SB_PAGEDOWN, 0 ) elseIf controlRow <= nVScrollValue // Up NewPos := controlRow - clientHeight + nOffset SetScrollPos ( hwnd , 1 , NewPos , 1 ) SendMessage( hWnd, WM_VSCROLL, SB_PAGEUP, 0 ) EndIf Return .t. *--------------------------------------------------------* Function NextPriorPage( dir ) *--------------------------------------------------------* LOCAL hWnd, aPos, delta DEFAULT dir := 1 // PgDn-1, PgUp-0 hWnd := GetFormHandle(_HMG_THISFORMNAME) aPos := GetClientRect(hWnd) delta := aPos[3] - aPos[1] - 20 SetScrollPos( hWnd, 1, GetScrollPos(hWnd, 1) + iif(dir=1, delta, - delta), 1 ) SendMessage( hWnd, WM_VSCROLL, iif(dir=1, SB_PAGEDOWN, SB_PAGEUP), 0 ) return .T. *--------------------------------------------------------* Function GetClientRect( hWnd ) *--------------------------------------------------------* local aRect := { 0, 0, 0, 0, hWnd } HB_GetClientRect( @aRect ) Return aRect #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" HB_FUNC ( HB_GETCLIENTRECT ) { RECT rect; GetClientRect( (HWND) hb_parnl(1,5), &rect ); hb_storni( rect.top, 1, 1 ); hb_storni( rect.left, 1, 2 ); hb_storni( rect.bottom, 1, 3 ); hb_storni( rect.right, 1, 4 ); } #pragma ENDDUMP выдает Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2227 demo.prg 100: Extra parameter in call to hb_parnl in function HB_FUN_HB_GETCLIENTRECT Error E2227 demo.prg 101: Extra parameter in call to hb_storni in function HB_FUN_HB_GETCLIENTRECT Error E2227 demo.prg 102: Extra parameter in call to hb_storni in function HB_FUN_HB_GETCLIENTRECT Error E2227 demo.prg 103: Extra parameter in call to hb_storni in function HB_FUN_HB_GETCLIENTRECT Error E2227 demo.prg 104: Extra parameter in call to hb_storni in function HB_FUN_HB_GETCLIENTRECT *** 5 errors in Compile *** C compile error.

Ответов - 2

gfilatov: Avf пишет: Что изменилось Были внесены изменения в Харбор, которые сделали нерабочим этот код. Ниже исправленный вариант, который работает со свежей версией Харбора: #include "minigui.ch" Function Main Local z, tb SET NAVIGATION EXTENDED DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 600 ; HEIGHT 400 ; VIRTUAL WIDTH 1300 ; VIRTUAL HEIGHT 2800 ; TITLE 'AutoScroll Demo (PageDown, PageUp)' ; MAIN ON KEY PRIOR ACTION NextPriorPage(0) ON KEY NEXT ACTION NextPriorPage(1) END WINDOW For z = 1 to 20 tb := "TB_" + ltrim(str(z,2)) @ z * 30,10 TextBox &tb; of Form_Main; VALUE ltrim(str(z,2)) ; ON GOTFOCUS AutoScroll(); WIDTH 100 HEIGHT 25 Next CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main Return Nil #define WM_VSCROLL 277 // 0x0115 #define SB_PAGEDOWN 3 #define SB_PAGEUP 2 *--------------------------------------------------------* Function AutoScroll() *--------------------------------------------------------* LOCAL nVScrollValue, controlRow, newPos, hWnd, clientHeight, aPos, nOffset hWnd := getFormHandle(_HMG_THISFORMNAME) aPos := GetClientRect(hWnd) clientHeight := aPos[3] - aPos[1] - GetHScrollBarHeight() nVScrollValue := GetScrollPos(hWnd, 1) controlRow := GetProperty ( _HMG_THISFORMNAME, _HMG_THISCONTROLNAME, 'ROW' ) nOffset := GetProperty ( _HMG_THISFORMNAME, _HMG_THISCONTROLNAME, 'HEIGHT' ) If controlRow >= clientHeight + nVScrollValue // Down NewPos := controlRow - nOffset SetScrollPos ( hwnd , 1 , NewPos , 1 ) SendMessage( hWnd, WM_VSCROLL, SB_PAGEDOWN, 0 ) elseIf controlRow <= nVScrollValue // Up NewPos := controlRow - clientHeight + nOffset SetScrollPos ( hwnd , 1 , NewPos , 1 ) SendMessage( hWnd, WM_VSCROLL, SB_PAGEUP, 0 ) EndIf Return .t. *--------------------------------------------------------* Function NextPriorPage( dir ) *--------------------------------------------------------* LOCAL hWnd, aPos, delta DEFAULT dir := 1 // PgDn-1, PgUp-0 hWnd := GetFormHandle(_HMG_THISFORMNAME) aPos := GetClientRect(hWnd) delta := aPos[3] - aPos[1] - 20 SetScrollPos( hWnd, 1, GetScrollPos(hWnd, 1) + iif(dir=1, delta, - delta), 1 ) SendMessage( hWnd, WM_VSCROLL, iif(dir=1, SB_PAGEDOWN, SB_PAGEUP), 0 ) return .T. *--------------------------------------------------------* Function GetClientRect( hWnd ) *--------------------------------------------------------* local aRect := { 0, 0, 0, 0, hWnd } HB_GetClientRect( @aRect ) Return aRect #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" HB_FUNC ( HB_GETCLIENTRECT ) { RECT rect; GetClientRect( (HWND) hb_parvnl(1,5), &rect ); hb_storvni( rect.top, 1, 1 ); hb_storvni( rect.left, 1, 2 ); hb_storvni( rect.bottom, 1, 3 ); hb_storvni( rect.right, 1, 4 ); } #pragma ENDDUMP

Гост: Avf пишет: Что изменилось что перестал транслироваться следующий пример : gfilatov пишет: Были внесены изменения в Харбор, которые сделали нерабочим этот код. Издержки open source software



полная версия страницы