On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Andrey
постоянный участник




Пост N: 1929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)


Всем привет.
Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ?
А заодно может и исправить и добавить новые....

Очень красочный пример: \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.



Спасибо: 0 
Профиль
Ответов - 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


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 776
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.15 11:38. Заголовок: nick_mi пишет:И еще ..


nick_mi пишет:
 цитата:
И еще я выполнил программу с
SergKis


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 795
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.15 13:26. Заголовок: SergKis пишет: Тепе..


SergKis пишет:

 цитата:
Теперь такая настройка стоит в h_init.prg


С учетом этого обсуждения изменил определение размера шрифта на

 цитата:
_HMG_DefaultFontSize := Max( 9, GetDefaultFontSize () )




Спасибо: 1 
Профиль
SergKis
постоянный участник




Пост N: 778
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.15 16:21. Заголовок: gfilatov2002 :sm36:..


gfilatov2002

Спасибо: 0 
Профиль
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




Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5203
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.15 21:22. Заголовок: Haz пишет: Столкнул..


Haz пишет:

 цитата:
Столкнулся с проблемой жора памяти при использовании функции EnumWindows из примеров минигуи. Каждый ее вызов отгрызает память . Как бороть ?


Проверил , так и есть.......тихо схлопнулась прога и гудбай....
В рабочих программах юзать ее в таком виде как есть (не доведенном до ума) опасно.

Спасибо: 0 
Профиль
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 , выше в своем сообщении приводил тест, подтверждающий жор памяти.
Может в библиотеку включить из этого поста, нормально работающую ?

Спасибо: 0 
Профиль
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 ?


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 814
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.15 17:56. Заголовок: Haz пишет: Может в ..


Haz пишет:

 цитата:
Может в библиотеку включить из этого поста, нормально работающую ?


Благодарю за помощь
Конечно, сделаю...

Спасибо: 0 
Профиль
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;
}


Спасибо: 0 
Профиль
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;
}





Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 816
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.08.15 21:40. Заголовок: Haz пишет: ПОМОГЛО ..


Haz пишет:

 цитата:
ПОМОГЛО ! увидел в чем проблема


Благодарю за подтверждение
Тогда буду использовать этот вариант в примерах новой сборки

Спасибо: 0 
Профиль
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;
}




Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4486
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.08.15 17:42. Заголовок: Делаю следующее: ..


Делаю следующее:
@ 0, 50 LABEL Label_1 VALUE .... СENTERALIGN VCENTERALIGN

Как можно потом снять у этого объекта СENTERALIGN и VCENTERALIGN ?

Спасибо: 0 
Профиль
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.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4487
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.08.15 22:20. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Это можно сделать с помощью функции ChangeStyle(), см. пример ниже


Спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4504
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.15 13:30. Заголовок: Со сменой версии (не..


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


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 826
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.09.15 14:37. Заголовок: Andrey пишет: Как и..


Andrey пишет:

 цитата:
Как исправить (убрать) появление MAIN окна поверх STANDARD окна ?


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


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4505
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.15 15:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
2) скрывать (а затем снова показывать) главное окно MAIN при вызове MODAL окна.



Вот это мне больше нравиться !
А как скрывать ? Делать HIDE или минимизировать окно ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 654
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.15 15:29. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как скрывать


из толкового словаря русского языка ( Ожегова )
 
СКРЫТЬ, Спрятать, чтобы кто-н. не обнаружил.


т.е. Если минимизировать, то кто -то может обнаружить

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 16
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет