Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... (продолжение) » Ответить

Примеры из Минигуи -ошибки, вопросы..... (продолжение)

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

nick_mi: И тот же GRID в XP С опцией Уменьшить до 640х480 click here Без опции Уменьшить до 640х480 click here И еще я выполнил программу с SergKis _HMG_DefaultFontName := _GetSysFont () _HMG_DefaultFontSize := GetDefaultFontSize () Для WIN 7 [pre]_GetSysFont () = Segoe UI GetDefaultFontSize () = 9 [/pre] Для WIN XP [pre]_GetSysFont () = Tahoma GetDefaultFontSize () = 4 [/pre] Хотя в настройках экрана я нигде не ставил шрифт размера 4

SergKis: nick_mi пишет:И еще я выполнил программу с SergKis Теперь такая настройка стоит в h_init.prg (уст. значений переменным _HMG_...). Если не ставим специально set font ... , то работают такие значения для фонта

gfilatov2002: SergKis пишет: Теперь такая настройка стоит в h_init.prg С учетом этого обсуждения изменил определение размера шрифта на _HMG_DefaultFontSize := Max( 9, GetDefaultFontSize () )


SergKis: gfilatov2002

Haz: Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? Вот самодостаточный пример . При нажатии кнопки старт наглядно виден аппетит EhumWindows и прога падает без слов [pre2] #include "hbthread.ch" #include "minigui.ch" Function Main local nFreeMem := MemoryStatus(2) DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 365 HEIGHT 245 ; TITLE "Free memory status" ; MAIN @ 20,145 BUTTON Button_1 ; CAPTION "Start" ; ACTION { || hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @Start() ) } ; WIDTH 80 HEIGHT 26 DEFAULT @ 70,31 PROGRESSBAR Progress_1 ; RANGE 0, nFreeMem ; WIDTH 300 HEIGHT 26 ; TOOLTIP "" END WINDOW DEFINE TIMER Timer_1 OF Form_1 INTERVAL 100 ACTION {|| Form_1.Progress_1.Value := MemoryStatus(2) } CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Func start() local aWin := {} while .t. aWin := EnumWindows () end return nil #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" static PHB_ITEM pArray; BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam) { hb_arrayAddForward (pArray, hb_itemPutNLL (NULL, (LONG) hWnd)); return TRUE; } HB_FUNC ( ENUMWINDOWS ) { pArray = hb_itemArrayNew ( 0 ); EnumWindows ((WNDENUMPROC) EnumWindowsProc, (LPARAM) 0); hb_itemReturnRelease ( pArray ); pArray = NULL; } #pragma ENDDUMP [/pre2]

Dima: Haz пишет: Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? Проверил , так и есть.......тихо схлопнулась прога и гудбай.... В рабочих программах юзать ее в таком виде как есть (не доведенном до ума) опасно.

Haz: Haz пишет: Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? Поборол, Работает корректно. [pre2] Func EnumWindows() local aWin := {} EnumWin( {|hWin, nLParam| AADD( aWin, hWin ) } ) return aWin #pragma BEGINDUMP #include <hbapi.h> #include <hbapiitm.h> #include <windows.h> void hb_evalBlock( PHB_ITEM pCodeBlock, ... ); static PHB_ITEM pCodeBlock = NULL; BOOL CALLBACK static EnumWinProc( HWND hWnd, LPARAM lParam ) { PHB_ITEM pHWnd = hb_itemPutNL( NULL, ( LONG ) hWnd ); PHB_ITEM pParam = hb_itemPutNL( NULL, ( LONG ) lParam ); if( pCodeBlock ) hb_evalBlock( pCodeBlock, pHWnd, pParam, 0 ); hb_itemRelease( pHWnd ); hb_itemRelease( pParam ); return TRUE; } HB_FUNC( ENUMWIN ) { LPARAM lParam = ( LPARAM ) hb_parnl( 2 ); pCodeBlock = hb_param( 1, HB_IT_BLOCK ); hb_retl( EnumWindows( (WNDENUMPROC) EnumWinProc, lParam)); pCodeBlock = NULL; } #pragma ENDDUMP [/pre2] PS. Григорий В примерах MiniGui есть другой вариант EnumWindows , выше в своем сообщении приводил тест, подтверждающий жор памяти. Может в библиотеку включить из этого поста, нормально работающую ?

Andrey: Если допустим в цикле вывожу список полей базы на форму: ELSEIF cType == 'N' .OR. cType == 'D' .OR. cType == 'C' xRet := FIELDGET( FIELDNUM( cPole ) ) cRet := "A"+ TRANSFORM( xRet, cPicture ) + "A" nWFld := GetTxtWidth( cRet, aFontFields[ 2 ], aFontFields[ 1 ] ) @ nRowFld, nColFld GETBOX &cObj VALUE xRet ; PICTURE cPicture ; WIDTH nWFld HEIGHT aFontFields[ 2 ] *2.5 - nDelHeight ; FONT aFontFields[ 1 ] SIZE aFontFields[ 2 ] ; BACKCOLOR { aBackColorPage, {255,255,200},{200,255,255}} ; FONTCOLOR { aClrFld , {255,255,200},{0,0,255}} ТО как мне определить, было ли исправлено хоть одно значение в GETBOX ?

gfilatov2002: Haz пишет: Может в библиотеку включить из этого поста, нормально работающую ? Благодарю за помощь Конечно, сделаю...

gfilatov2002: Haz Предлагаю проверить еще такой вариант этой функции: [pre]static PHB_ITEM pArray; #if defined( __BORLANDC__ ) #pragma argsused #endif BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam ) { PHB_ITEM pHWnd = hb_itemPutNL( NULL, ( LONG ) hWnd ); #if defined( __MINGW32__ ) UNREFERENCED_PARAMETER( lParam ); #endif hb_arrayAddForward( pArray, pHWnd ); hb_itemRelease( pHWnd ); return TRUE; } HB_FUNC ( ENUMWINDOWS ) { pArray = hb_itemArrayNew( 0 ); EnumWindows( ( WNDENUMPROC ) EnumWindowsProc, ( LPARAM ) 0 ); hb_itemReturnRelease( pArray ); pArray = NULL; }[/pre]

Haz: Григорий Предлагаю проверить еще такой вариант этой функции: протестирую завтра, на первый взгляд она практически та же, что я выкладывал в примере жора памяти. Разница в этом [pre2] #if defined( __BORLANDC__ ) #pragma argsused #endif [/pre2] и в передаче параметра в функцию [pre2] hb_arrayAddForward( pArray, pHWnd ) [/pre2] не уверен что это поможет, но всяко бывает ) ПОМОГЛО ! увидел в чем проблема hb_itemRelease( pHWnd ) - лечит жор PS Григорий в официале HMG тоже жор будет вот из последнего [pre2] BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam) { UNREFERENCED_PARAMETER (lParam); hb_arrayAddForward (pArray, hb_itemPutNLL (NULL, (LONG_PTR) hWnd)); return TRUE; } [/pre2]

gfilatov2002: Haz пишет: ПОМОГЛО ! увидел в чем проблема Благодарю за подтверждение Тогда буду использовать этот вариант в примерах новой сборки

Haz: gfilatov2002 пишет: Тогда буду использовать этот вариант в примерах новой сборки спасибо PS Григорий в официале HMG тоже жор будет вот из последнего [pre2] BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam) { UNREFERENCED_PARAMETER (lParam); hb_arrayAddForward (pArray, hb_itemPutNLL (NULL, (LONG_PTR) hWnd)); return TRUE; } [/pre2]

Andrey: Делаю следующее: @ 0, 50 LABEL Label_1 VALUE .... СENTERALIGN VCENTERALIGN Как можно потом снять у этого объекта СENTERALIGN и VCENTERALIGN ?

gfilatov2002: Andrey пишет: Как можно потом снять у этого объекта СENTERALIGN и VCENTERALIGN ? Это можно сделать с помощью функции ChangeStyle(), см. пример ниже [pre]/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "i_winuser.ch" Function Main DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 300 ; TITLE "MiniGUI Label Demo" ; MAIN ; FONT "Arial" SIZE 10 @ 010,10 LABEL Label_1 VALUE "Label_1" WIDTH 200 TOOLTIP "Label 1" CENTERALIGN VCENTERALIGN backcolor GRAY END WINDOW DeleteStyleCenter( GetControlHandle('Label_1','Form_1') ) Form_1.Label_1.Value := 'New Value' CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Function DeleteStyleCenter( hControl ) ChangeStyle( hControl, , ES_CENTER, .F. ) ChangeStyle( hControl, , SS_CENTERIMAGE, .F. ) return .t. [/pre]

Andrey: gfilatov2002 пишет: Это можно сделать с помощью функции ChangeStyle(), см. пример ниже Спасибо БОЛЬШОЕ !

Andrey: Со сменой версии (не помню с какой) теперь какая то фигня с окнами. Создаю основное окно MAIN - не на весь экран. Из него WINDOWTYPE STANDARD. Оно становиться активным и в нем работаю. И стало теперь ВСЕГДА при вызове MODAL окна - появляться MAIN окно ! Т.е. какой то бутерброд: STANDARD окно,поверх MAIN окно, а потом MODAL окно. А должно быть просто STANDARD окно, а потом MODAL окно. Как исправить (убрать) появление MAIN окна поверх STANDARD окна ?

gfilatov2002: Andrey пишет: Как исправить (убрать) появление MAIN окна поверх STANDARD окна ? Есть два пути на выбор: 1) изменить при определении окна класс STANDARD на CHILD; 2) скрывать (а затем снова показывать) главное окно MAIN при вызове MODAL окна.

Andrey: gfilatov2002 пишет: 2) скрывать (а затем снова показывать) главное окно MAIN при вызове MODAL окна. Вот это мне больше нравиться ! А как скрывать ? Делать HIDE или минимизировать окно ?

Haz: Andrey пишет: А как скрывать из толкового словаря русского языка ( Ожегова ) [pre2] СКРЫТЬ, Спрятать, чтобы кто-н. не обнаружил. [/pre2] т.е. Если минимизировать, то кто -то может обнаружить



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