IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Контролы, API
Unconnected
сообщение 28.06.2010 17:20
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем. smile.gif

Сейчас начал переводить одно своё приложение на api, весёлое занятие) С механизмами всё понятно, часть проги портировал, а вот с отображением контролов на окне не очень ясно.. Во-первых - всегда ли обязательно создавать, например, label таким образом (для себя в ф-ю обернул):

Procedure createstatic(caption:string;x,y,wid,hei:integer);
begin
CreateWindow('static', pchar(caption), WS_CHILD or WS_VISIBLE,x,y,wid,hei,hwndmain,10000, hInstance, 0);
end;

, или есть какой-то более простой способ внешнего проектирования? Я читал про добавление информации о контролах в ресурсы; это, в принципе, довольно удобно, если сделать быструю компиляцию .rc в .res батником (ну когда нужно быстро что-то изменить там), но вроде как он (способ) нестабильный какой-то.. Во-вторых - где задавать такие параметры static, как шрифт, цвет, размер текста?
Плохо, что вся инфа в msdn по api во-первых, на английском, а во-вторых, там сишный синтаксис. Вот в msdn, например, было написано ShowWindow(hwndMain, nCmdShow);, а делфи второй параметр не принимает такой, а принимает CmdShow (хотя в мсдн вроде и было указано, что от платформы зависит). И ещё, вот, допустим, в процессе исполнения надо мне изменить что-то, например цвет формы. Для этого достаточно вызвать функцию с параметрами, или надо в оконной функции описывать обработку сообщения CTL_COLOR, а потом когда надо отправлять это сообщение?

Сообщение отредактировано: Unconnected - 28.06.2010 17:22


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Unconnected
сообщение 1.07.2010 14:05
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Там в этой GDI есть тип непонятный какой-то, называется IStream, якобы поток. С T<...>Stream его ассоциировать никак не получается, да даже и описать переменную такого типа тоже нельзя. Он используется во многих функциях загрузки изображений. Поползал по юнитам, нашёл только что он является интерфейсом от некого ISequentialStream (которого, впрочем, моя программа тоже не видит, наверное, это всё приватные структуры). Это я так картинки из ресурсов гружу:

Function LoadJpegRes(const ID: string): TStream;
var
RS: TResourceStream;
begin
RS:=TResourceStream.Create(HInstance, ID, 'JPEG');
result:=TStream.create;
try
RS.Seek(0, soBeginning);
Result.CopyFrom(rs,rs.size);
finally
RS.Free;
end;
end;

Procedure myOnPaint(DC: HDC;x,y:integer;stream:TStream);
var
graphics : TGPGraphics;
Image: TGPImage;
destinationRect: TGPRectF;
begin
Image:= TGPImage.Create();
GdipLoadImageFromStream(stream,image); //<-тут ошибка
graphics := TGPGraphics.Create(DC);
graphics.DrawImage(image, x, y);
Image.Free;
graphics.Free;
end;

Procedure getimage(id:string;x,y:integer); //<--изначально собираюсь вызывать её с ID ресурса и координатами
var ps:TPaintStruct;
begin
BeginPaint(form1.form.Handle, ps);
myOnPaint(Form1.form.Canvas.Handle,x,y,loadjpegres(id));
EndPaint(form1.handle, ps);
end;



Сообщение отредактировано: Unconnected - 1.07.2010 14:14


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Контролы, API   28.06.2010 17:20
Client   по-моему - да. var Font: HFONT; ... Font := Crea...   28.06.2010 17:51
volvo   RC-файл - достаточно простой способ? Тогда использ...   28.06.2010 18:18
Unconnected   Присоединил .rc, вписал там такое: form CONTROL ...   28.06.2010 23:14
volvo   Ну да, ну да... А что, вот это сделать тебе кака...   29.06.2010 3:50
Unconnected   Я сохранял в ANSI, и добавлял в проект через Add...   29.06.2010 16:13
volvo   Никогда не говори этого своей программе, потому ка...   29.06.2010 17:14
Unconnected   Я так понял, диалоги призваны не замещать основн...   29.06.2010 18:58
volvo   Ну, началось. Ты зачем на WinAPI программу пишешь?...   29.06.2010 22:45
Unconnected   Аа, что-то типа KOL&MCK, плавали, знаем ) Не...   30.06.2010 10:37
Unconnected   Ещё одну свою заморочку с api вспомнил. Там есть ф...   1.07.2010 0:49
volvo   Либо вот такой бред: [C++,WinAPI]Загрузка картинк...   1.07.2010 1:27
Unconnected   В бреде я был, только что-то сильно много там всег...   1.07.2010 2:05
volvo   Итак, результаты экспериментов с отрисовкой JPG бе...   1.07.2010 10:41
volvo   Кстати, завёлся GDI+ и на 2009-ой Дельфи (достаточ...   1.07.2010 12:46
Unconnected   Сейчас как раз ковырялся с gdi, хорошо, что обнови...   1.07.2010 13:38
Unconnected   Там в этой GDI есть тип непонятный какой-то, назыв...   1.07.2010 14:05
volvo   Не тип, а интерфейс. IStream Interface Вот тут по...   1.07.2010 14:23
Unconnected   Спасибо за ссылку, сопоставил коды, получилось: p...   1.07.2010 15:21


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.07.2025 0:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"