Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E / 15 сообщений из 15, страница 1 из 1
16.11.2006, 12:06
    #34132705
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
как это сделать в 8-ке?
...
Рейтинг: 0 / 0
16.11.2006, 14:41
    #34133508
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
Саня на сколько я понял это GUID ClsID реестра
так что вроде так
lqEncoderClsID = "0h"+Strconv(<Соответсвтуюзий бинарный GUID>,15)
...
Рейтинг: 0 / 0
16.11.2006, 14:44
    #34133529
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
но ведь тип строка будет а мне варбиннари нужно
...
Рейтинг: 0 / 0
16.11.2006, 14:50
    #34133560
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
GdipSaveImageToFile ( ;
This.gdipHandle ;
, strconv(m.tcFilename,5)+chr(0) ;
, lqCLSIDEncoder ;
, lnEncoderParamsPtr )

lqCLSIDEncoder как мне ее туда сунуть в 8-ке
...
Рейтинг: 0 / 0
16.11.2006, 14:54
    #34133582
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
alex11100как это сделать в 8-ке?
тут я делал подборку в свое время может что и пригодится, но с переходом на SQL Server 2005 актуальность отпала...
...
Рейтинг: 0 / 0
16.11.2006, 15:00
    #34133622
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
Sergey Ch, спасибо,
но мне изображение конвертнуть нужно
...
Рейтинг: 0 / 0
16.11.2006, 15:36
    #34133775
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
За правильность не ручаюсь, но если "в лоб" попробовать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
lqCLSIDEncoder = ;
		CHR(0x00)+;
		CHR(0xF4)+;
		CHR(0x7C)+;
		CHR(0x55)+;
		CHR(0x04)+;
		CHR(0x1A)+;
		CHR(0xD3)+;
		CHR(0x11)+;
		CHR(0x9A)+;
		CHR(0x73)+;
		CHR(0x00)+;
		CHR(0x00)+;
		CHR(0xF8)+;
		CHR(0x1E)+;
		CHR(0xF3)+;
		CHR(0x2E)
...
Рейтинг: 0 / 0
16.11.2006, 16:16
    #34133944
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
в 'лоб' уже проходили
...
Рейтинг: 0 / 0
16.11.2006, 16:31
    #34134021
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
alex11100в 'лоб' уже проходили
И что получилось?
...
Рейтинг: 0 / 0
17.11.2006, 21:55
    #34137992
MSDN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
А вообще зачем ? :) Ведь можно просто по имени дернуть компоненту.
И кстати, ВладимирМ , так нельзя.
В С++ это выглядит так :
extern const IID IID_Application ={0x002D2B12, 0xC1FA, 0x4193,
{0xB1, 0x34, 0xD8, 0x6E, 0xAE, 0xCC ,0x52, 0x50}};
К примеру.
Вот и приводите к формату IDL.
Удачи.

P/S: Я понятия не имею как это сделать в фоксе, мне гораздо проще написать FLL, возвожно это не правильно, но идея хорошая.
...
Рейтинг: 0 / 0
18.11.2006, 07:05
    #34138241
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
Код Славы Клепининна по Gdi+
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
LPARAMETERS tcFileName
LOCAL lcFileName, lcFileExt, lqClsidEncoder, lqEncoderParameter, luPtr
IF VARTYPE(tcFileName) = 'C'
	IF this.nativeImage =  0 		&& Если нет  загруженного изображения
		this.Status = - 1         && Наш код ошибки
		RETURN .f.
	ENDIF
	lqEncoderParameter = NULL
	lcFileExt = UPPER(JUSTEXT(tcFileName))
	DO CASE 
		CASE lcFileExt == "BMP"
			lqClsidEncoder = this.ClsidBmp 
		CASE lcFileExt == "GIF"
			lqClsidEncoder = this.ClsidGif 
		CASE lcFileExt == "JPG"
			lqClsidEncoder = this.ClsidJpeg 
			luPtr = this.GetJpegParameter(@lqEncoderParameter)
		CASE lcFileExt == "PNG"
			lqClsidEncoder = this.ClsidPng 
		CASE lcFileExt == "TIF"
			lqClsidEncoder = this.ClsidTiff
		OTHERWISE 
			this.Status =  13 	&& Gdiplus: UnknownImageFormat 
			RETURN .f.
	ENDCASE 
	lcFileName = STRCONV(tcFileName + CHR( 0 ),  5 )	&& Имя файла - в Unicode
	DECLARE Long GdipSaveImageToFile IN Gdiplus.dll Long, String, String, String
	DECLARE Long GlobalFree IN kernel32.dll Long
	this.Status = GdipSaveImageToFile(this.nativeImage, lcFileName, lqClsidEncoder, lqEncoderParameter)
	IF !ISNULL(lqEncoderParameter)	&& Если резервиловалась глобальная память Windows под структуру параметров,
		= GlobalFree(luPtr)			&& то освобождаем эту память
	ENDIF 	
ELSE 
	this.Status =  2 				&& Gdiplus: InvalidParameter
ENDIF 	
RETURN this.Status =  0 
Что бы получить Enocoder'ы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
DECLARE Long GlobalAlloc IN kernel32.dll Long, Long
DECLARE Long GlobalFree IN kernel32.dll Long
DECLARE Long lstrlenW IN kernel32.dll Long
DECLARE Long GdipGetImageEncodersSize IN gdiplus.dll Long @numEncoders, Long @ nsize
DECLARE Long GdipGetImageEncoders IN gdiplus.dll Long numEncoders, Long nsize, Long nBufferPtr

luBMP = STRCONV("image/bmp",  5 )
luGIF = STRCONV("image/gif",  5 )
luJPEG = STRCONV("image/jpeg",  5 )
luPNG = STRCONV("image/png",  5 )
luTIFF = STRCONV("image/tiff",  5 )
lnNumEncoders =  0 
lnBufferSize =  0 
this.Status = GdipGetImageEncodersSize(@lnNumEncoders, @lnBufferSize)
IF this.Status =  0 
	lnBufferPtr = GlobalAlloc(0x0040, lnBufferSize)
	this.Status = GdipGetImageEncoders(lnNumEncoders, lnBufferSize, lnBufferPtr)
	IF this.Status =  0 
		FOR lnNum =  0  to lnNumEncoders -  1 
			lnStringPtr = CTOBIN(SYS( 2600 , lnBufferPtr + lnNum *  76  +  48 ,  4 ),'RS')
			lcEncoderType = SYS( 2600 , lnStringPtr, lstrlenW(lnStringPtr) *  2 )
			lcEncoderClsid = SYS( 2600 , lnBufferPtr + lnNum *  76 ,  16 )
			DO CASE
				CASE lcEncoderType == luBMP		      && Кодер формата BMP
					this.ClsidBmp = lcEncoderClsid
				CASE lcEncoderType == luGIF		      && Кодер формата GIF
					this.ClsidGIF = lcEncoderClsid
				CASE lcEncoderType == luJPEG		  && Кодер формата JPEG
					this.ClsidJpeg = lcEncoderClsid
				CASE lcEncoderType == luPNG		      && Кодер формата PNG
					this.ClsidPNG = lcEncoderClsid
				CASE lcEncoderType == luTIFF	      && Кодер формата TIFF
					this.ClsidTiff = lcEncoderClsid
			ENDCASE 
		ENDFOR 
	ENDIF 
	= GlobalFree(lnBufferPtr)
ENDIF 		
...
Рейтинг: 0 / 0
18.11.2006, 07:17
    #34138242
MSDN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
piva, Вы веткой не ошиблись ? :)
...
Рейтинг: 0 / 0
20.11.2006, 07:02
    #34139763
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
Нет не ошибся - читай внимательнее
alex11100GdipSaveImageToFile ( ;
This.gdipHandle ;
, strconv(m.tcFilename,5)+chr(0) ;
, lqCLSIDEncoder ;
, lnEncoderParamsPtr )

lqCLSIDEncoder как мне ее туда сунуть в 8-ке

Encoder - строка вмда GUID определяющая тип сохраняемого файла
...
Рейтинг: 0 / 0
20.11.2006, 14:04
    #34140916
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
to Alex11100

Указанный вами (бинарный) формат данных поддерживается только в девятой версии фокса.
В восьмой версии можно сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#DEFINE CLSID_BMP  "{557CF400-1A04-11D3-9A73-0000F81EF32E}"
#DEFINE CLSID_JPEG "{557CF401-1A04-11D3-9A73-0000F81EF32E}"
#DEFINE CLSID_GIF   "{557CF402-1A04-11D3-9A73-0000F81EF32E}"

DECLARE INTEGER UuidFromString in rpcrt4.dll String StringUuid, String @ Uuid

* Конвертирование строки в UID

PROTECTED FUNCTION StrToGuid(s)
   LOCAL guid
   guid = Space( 16 )
   s = Chrtran(s, "{}", "")
   UuidFromString(s, @guid)
   RETURN guid
ENDFUNC


Передаёте функции нужный CLSID и получаете его двоичное представление.
Но лучше использовать определение CLSID кодеков так, как показано у Вадима.
...
Рейтинг: 0 / 0
20.11.2006, 14:07
    #34140929
lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E
Простите, PROTECTED есно не нужен... Вытащил код из класса...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / lqEncoderClsID = 0h00F47C55041AD3119A730000F81EF32E / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]