Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост N: 1929
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)
Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \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
|
| |
Пост N: 182
Зарегистрирован: 19.05.05
|
|
Отправлено: 30.07.15 08:37. Заголовок: И тот же GRID в XP С..
И тот же GRID в XP С опцией Уменьшить до 640х480 click here Без опции Уменьшить до 640х480 click here И еще я выполнил программу с SergKis цитата: | _HMG_DefaultFontName := _GetSysFont () _HMG_DefaultFontSize := GetDefaultFontSize () |
| Для WIN 7 _GetSysFont () = Segoe UI GetDefaultFontSize () = 9 Для WIN XP _GetSysFont () = Tahoma GetDefaultFontSize () = 4 Хотя в настройках экрана я нигде не ставил шрифт размера 4
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 776
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.07.15 11:38. Заголовок: nick_mi пишет:И еще ..
nick_mi пишет: цитата: | И еще я выполнил программу с SergKis |
| Теперь такая настройка стоит в h_init.prg (уст. значений переменным _HMG_...). Если не ставим специально set font ... , то работают такие значения для фонта
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 795
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.07.15 13:26. Заголовок: SergKis пишет: Тепе..
SergKis пишет: цитата: | Теперь такая настройка стоит в h_init.prg |
| С учетом этого обсуждения изменил определение размера шрифта на цитата: | _HMG_DefaultFontSize := Max( 9, GetDefaultFontSize () ) |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 778
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.07.15 16:21. Заголовок: gfilatov2002 :sm36:..
gfilatov2002
|
|
|
Haz
|
| |
Пост N: 623
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.08.15 14:32. Заголовок: нехорошее поведение функции EnumWindows из примеров
Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? Вот самодостаточный пример . При нажатии кнопки старт наглядно виден аппетит EhumWindows и прога падает без слов #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
|
|
|
Dima
|
| |
Пост N: 5203
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.08.15 21:22. Заголовок: Haz пишет: Столкнул..
Haz пишет: цитата: | Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? |
| Проверил , так и есть.......тихо схлопнулась прога и гудбай.... В рабочих программах юзать ее в таком виде как есть (не доведенном до ума) опасно.
|
|
|
Haz
|
| |
Пост N: 626
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.08.15 16:42. Заголовок: Haz пишет: Столкнул..
Haz пишет: цитата: | Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ? |
| Поборол, Работает корректно. 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 PS. Григорий В примерах MiniGui есть другой вариант EnumWindows , выше в своем сообщении приводил тест, подтверждающий жор памяти. Может в библиотеку включить из этого поста, нормально работающую ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4456
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.08.15 17:30. Заголовок: Если допустим в цикл..
Если допустим в цикле вывожу список полей базы на форму: 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
|
| moderator
|
Пост N: 814
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.08.15 17:56. Заголовок: Haz пишет: Может в ..
Haz пишет: цитата: | Может в библиотеку включить из этого поста, нормально работающую ? |
| Благодарю за помощь Конечно, сделаю...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 815
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.08.15 21:00. Заголовок: Haz Предлагаю прове..
Haz Предлагаю проверить еще такой вариант этой функции: 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; }
|
|
|
Haz
|
| |
Пост N: 627
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.08.15 21:17. Заголовок: Григорий Предлагаю п..
Григорий цитата: | Предлагаю проверить еще такой вариант этой функции: |
| протестирую завтра, на первый взгляд она практически та же, что я выкладывал в примере жора памяти. Разница в этом #if defined( __BORLANDC__ ) #pragma argsused #endif и в передаче параметра в функцию hb_arrayAddForward( pArray, pHWnd ) не уверен что это поможет, но всяко бывает ) ПОМОГЛО ! увидел в чем проблема hb_itemRelease( pHWnd ) - лечит жор PS Григорий в официале HMG тоже жор будет вот из последнего BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam) { UNREFERENCED_PARAMETER (lParam); hb_arrayAddForward (pArray, hb_itemPutNLL (NULL, (LONG_PTR) hWnd)); return TRUE; }
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 816
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.08.15 21:40. Заголовок: Haz пишет: ПОМОГЛО ..
Haz пишет: цитата: | ПОМОГЛО ! увидел в чем проблема |
| Благодарю за подтверждение Тогда буду использовать этот вариант в примерах новой сборки
|
|
|
Haz
|
| |
Пост N: 628
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.08.15 21:43. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Тогда буду использовать этот вариант в примерах новой сборки |
| спасибо PS Григорий в официале HMG тоже жор будет вот из последнего BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam) { UNREFERENCED_PARAMETER (lParam); hb_arrayAddForward (pArray, hb_itemPutNLL (NULL, (LONG_PTR) hWnd)); return TRUE; }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4486
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.15 17:42. Заголовок: Делаю следующее: ..
Делаю следующее: @ 0, 50 LABEL Label_1 VALUE .... СENTERALIGN VCENTERALIGN Как можно потом снять у этого объекта СENTERALIGN и VCENTERALIGN ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 822
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.08.15 21:03. Заголовок: Andrey пишет: Как м..
Andrey пишет: цитата: | Как можно потом снять у этого объекта СENTERALIGN и VCENTERALIGN ? |
| Это можно сделать с помощью функции ChangeStyle(), см. пример ниже /* * 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.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4487
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.15 22:20. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Это можно сделать с помощью функции ChangeStyle(), см. пример ниже |
| Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4504
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.15 13:30. Заголовок: Со сменой версии (не..
Со сменой версии (не помню с какой) теперь какая то фигня с окнами. Создаю основное окно MAIN - не на весь экран. Из него WINDOWTYPE STANDARD. Оно становиться активным и в нем работаю. И стало теперь ВСЕГДА при вызове MODAL окна - появляться MAIN окно ! Т.е. какой то бутерброд: STANDARD окно,поверх MAIN окно, а потом MODAL окно. А должно быть просто STANDARD окно, а потом MODAL окно. Как исправить (убрать) появление MAIN окна поверх STANDARD окна ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 826
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.09.15 14:37. Заголовок: Andrey пишет: Как и..
Andrey пишет: цитата: | Как исправить (убрать) появление MAIN окна поверх STANDARD окна ? |
| Есть два пути на выбор: 1) изменить при определении окна класс STANDARD на CHILD; 2) скрывать (а затем снова показывать) главное окно MAIN при вызове MODAL окна.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4505
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.15 15:11. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | 2) скрывать (а затем снова показывать) главное окно MAIN при вызове MODAL окна. |
| Вот это мне больше нравиться ! А как скрывать ? Делать HIDE или минимизировать окно ?
|
|
|
Haz
|
| |
Пост N: 654
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.09.15 15:29. Заголовок: Andrey пишет: А как..
Andrey пишет: из толкового словаря русского языка ( Ожегова ) СКРЫТЬ, Спрятать, чтобы кто-н. не обнаружил. т.е. Если минимизировать, то кто -то может обнаружить
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|