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




Пост 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 
ПрофильЦитата Ответить
Ответов - 253 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]


постоянный участник




Пост N: 5793
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.18 15:48. Заголовок: Pasha пишет: Наверн..


Pasha пишет:

 цитата:
Наверное надо сделать обертку для GetLastError()



А в МиниГуи нет разве стандартной обработки для функций типа CreateFolder() ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3712
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.18 15:54. Заголовок: CreateFolder() возвр..


CreateFolder() возвращает логическое значение. При неудаче надо анализировать GetLastError, а обертки для нее похоже нет.
Ее надо воткнуть куда-нибудь вроде c_winapimisc.c, можно в конец файла

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3713
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.18 16:15. Заголовок: Andrey пишет: Или н..


Andrey пишет:

 цитата:
Или нужно делать старый клиперовский вариант MakeDir(), где есть обработка ошибок.



С точки зрения winapi функции hb_dirCreate aka MakeDir и CreateFolder работают одинаково. Кроме анализа результата конечно.
Так что лучше использовать MakeDir.

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




Пост N: 5794
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.18 16:17. Заголовок: Pasha пишет: Ее над..


Pasha пишет:

 цитата:
Ее надо воткнуть куда-нибудь вроде c_winapimisc.c, можно в конец файла



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

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




Пост N: 5798
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.18 01:45. Заголовок: Эта функция уже реал..


Эта функция уже реализована в Харбор библиотеке hbwin под именем wapi_GetLastError () /Григорий/
Оказывается есть такая проверка !

Pasha пишет:

 цитата:
Так что лучше использовать MakeDir.


Да уже привык в МиниГуи писать везде CreateFolder().

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3714
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.03.18 09:43. Заголовок: Andrey пишет: Эта ф..


Andrey пишет:

 цитата:
Эта функция уже реализована в Харбор библиотеке hbwin под именем wapi_GetLastError ()



Для minigui эта функция не прокатит. wapi_GetLastError возвращает код ошибки, которая возникла при выполнении другой функции из библиотеки hbwin. Эта функция должна установить ошибку вызовом hbwapi_SetLastError / wapi_SetLastError. Функции из minigui это не делают.

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


Пост N: 794
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 30.03.18 10:55. Заголовок: Я использую ..


Я использую

 цитата:

DISKCHANGE(Left(sDir,1))
DIRCHANGE(sDir)
nErrorCode:=DIRMAKE(sTxt2)


Это одно и тоже с MakeDir?
Ошибки обрабатываются, т.е выдаются. Два раза одну и ту же директорию не создашь.
А коды ошибок где почитать ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3715
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.03.18 11:06. Заголовок: DirMake - это функци..


DirMake - это функция из ct. DiskChange/DirChange - функции харбора.
Поскольку DirMake из ct, как и MakeDir из ядра харбора, реализованы через харборовский файловый api, то и обработка ошибок у них одинаковая.

Функции из minigui - это отдельное независимое государство, даже если в конце концов они выполняют те же самые вызовы winapi, поэтому средства обработки ошибок харбора они не используют. Должны быть свои средства. Достаточно маленькой обертки для GetLastError.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3716
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.03.18 11:13. Заголовок: Pasha пишет: А коды..


Pasha пишет:

 цитата:
А коды ошибок где почитать ?



Поскольку харбор многоплатформенный, то функция HB_OSERROR возвращает код ошибки соответствующей ОС, в нашем случае Windows.
Эти коды надо искать в winapi
Но есть еще функция DosError, которая транслирует коды ошибок каждой ОС в старые коды MS DOS.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3717
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.03.18 12:25. Заголовок: Кстати, можно легко ..


Кстати, можно легко интегрировать файловые функции minigui в harbour file api таким образом:

HB_FUNC( CREATEFOLDER )
{
// вместо
// hb_retl( CreateDirectory( ( LPCTSTR ) hb_parc( 1 ), NULL ) );
hb_retl( hb_fsMkDir( hb_parc( 1 ) ) );
}

тоже самое можно сделать еще с несколькими подобными функциями. Работать они будут так же, но появится возможность анализа ошибок стандартными средствами харбора.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1270
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.03.18 12:32. Заголовок: Pasha пишет: Для mi..


Pasha пишет:

 цитата:
Для minigui эта функция не прокатит.


Спасибо за разъяснение этого вопроса

Pasha пишет:

 цитата:
воткнуть куда-нибудь вроде c_winapimisc.c


Добавмл функцию-обертку GetLastError() в этот файл.

Vlad04 пишет:

 цитата:
коды ошибок где почитать ?


Они есть в файле bcc55\include\error.h

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




Пост N: 5800
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.18 15:02. Заголовок: Вопрос возник... Мож..


Вопрос возник...
Можно ли показать прозрачный PNG-файл произвольной формы (допустип круг) сразу на рабочем столе ?
Или на форме, только убрать (сделать невидимым) само окно, оставив картинку.

Где то пример видел в библиотеке с вводом пароля, там окно было не стандартное, фигурное.
Искал и не нашёл.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6793
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.03.18 16:19. Заголовок: Andrey пишет: Искал..


Andrey пишет:

 цитата:
Искал и не нашёл.


А искал вообще ?
C:\MiniGUI\SAMPLES\BASIC\Login_2\

ЗЫ
Как пить дать Андрей скажет что искал только по слову Pass

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




Пост N: 5802
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.18 20:56. Заголовок: Dima пишет: А искал..


Dima пишет:

 цитата:
А искал вообще ?


Все папки вручную перерыл. Помню, видел такой пример.
Спасибо Дима !

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




Пост N: 5810
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.04.18 08:23. Заголовок: Всем привет ! Как м..


Всем привет !

Как можно получить размер PNG-файла из ресурсов ?
Есть функция типа - GetImageSizeFromRes() ?

Или нужно в коде выгрузить PNG-файл из ресурсов на диск, а потом уже узнавать размер файла:
nResult := RCDataToFile( "IMAGE1", cDiskFile, "PNG" )
aSize := hb_GetImageSize( cDiskFile )

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1273
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.04.18 11:48. Заголовок: Andrey пишет: Как м..


Andrey пишет:

 цитата:
Как можно получить размер PNG-файла из ресурсов ?


Это возможно сделать в примере из папки Basic\Login_2,
если изменить функцию GetImageInfo() таким образом:

FUNCTION GetImageInfo( cPicFile, nPicWidth, nPicHeight ) 
LOCAL hBitmap, aSize

hBitmap := C_GetResPicture( cPicFile )

aSize := GetBitmapSize( hBitmap )

DeleteObject( hBitmap )

nPicWidth := aSize [1]
nPicHeight := aSize [2]

RETURN (nPicWidth > 0) // GetImageInfo()


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




Пост N: 5811
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.04.18 16:24. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
если изменить функцию GetImageInfo() таким образом:


Спасибо БОЛЬШОЕ ! Буду использовать !

Может всё таки добавите ЯВНО функцию в библиотеку, чтобы можно было потом ею пользоваться ?
GetImageSizeFromRes() - понятное название функции.
Вот такой код примерно -
Скрытый текст



Тем более встречал такое - METHOD GetImageSizeFromFile( ... )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6798
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.04.18 16:36. Заголовок: Andrey пишет: Тем б..


Andrey пишет:

 цитата:
Тем более встречал такое - METHOD GetImageSizeFromFile( ... )


Вероятно тут C:\MiniGUI\SAMPLES\Advanced\RMChart_DLL_2\

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1222
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.04.18 17:01. Заголовок: Dima пишет: Вероятн..


Dima пишет:

 цитата:
Вероятно тут C:\MiniGUI\SAMPLES\Advanced\RMChart_DLL_2\


c DLL мутить не очень хочется ради одной функции.

Тем более , что все и так есть причем в сырцах минмгуя MiniGUI\SOURCE\c_bitmap.c
 
HB_FUNC( HB_GETIMAGESIZE )
{
int x = 0, y = 0;

GetImageSize( hb_parcx( 1 ), &x, &y );

hb_reta( 2 );
HB_STORNI( x, -1, 1 );
HB_STORNI( y, -1, 2 );
}

/*
Harbour MiniGUI 1.3 Extended (Build 33)
Author P.Chornyj

Function BitmapSize()
---------------------
Syntax
BitmapSize( xBitmap ) --> aTarget

Arguments
<xBitmap> is the NAME of the bitmap file or resource
or
<xBitmap> is the handle to OBJ_BITMAP

Returns
BitmapSize() returns an array has the following structure:
----------------------------------------------------------
Position Metasymbol i_bitmap.ch
----------------------------------------------------------
1 nWidth BM_WIDTH
2 nHeight BM_HEIGHT
3 nBitsPerPixel BM_BITSPIXEL
----------------------------------------------------------
If file or resource are not found or corrupt, or is not OBJ_BITMAP,
BitmapSize returns an array {0, 0, 4} for compatibility
*/



Андрей предложил обертку для этого, но ведь функция читает не только из ресурса , и как минимум название предложенного это не отражает
PS Причем , эта обертка всего лишь добавляет сообщение об ошибке
PPS. Кроме того в библиотеке бостаурос есть аналоги ВT_BITMAPWIDTH и пр.
Думаю плодить сущности не стоит, достаточно для работы.

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




Пост N: 5813
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.04.18 14:47. Заголовок: Всем привет ! Взял с..


Всем привет !
Взял сделал свой пример на базе примера SAMPLES\BASIC\Login_2.
В нём команда
        SET WINDOW frmCheckUser TRANSPARENT TO COLOR aPicBackColor

не компилируется... Выдаёт ошибку при компиляции.
Harbour 3.2.0dev (r1803161710)
Copyright (c) 1999-2018, https://harbour.github.io/
form_LoginPassw.prg(161) Error E0030 Syntax error "syntax error at 'WINDOW'"
1 error
No code generated.

Исправил на команду
        SetLayeredWindowAttributes( GetFormHandle( "frmCheckUser" ), ( aPicBackColor[1] + ( aPicBackColor[2] * 256 ) + ( aPicBackColor[3] * 65536 ) ), 0, 0x01 )

Компиляция прошла, всё работает...
Одна незадача - чёрный цвет вообще пропал, стал прозрачным.
Поменял черный цвет на темно-синий. Терпимо.
Окантовка кнопок на форме черная поменялась на прозрачную. Как менять окантовку кнопок на темно-синий не знаю как ...
И вообще, можно ли изменить aPicBackColor := BLACK на другой цвет, который чаще всего не используется ?
Допустим на FUCHSIA ?
Но чтобы форма оставалась прозрачной !


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 253 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 381
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет