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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.07.2010 10:41
Сообщение #2


Гость






Итак, результаты экспериментов с отрисовкой JPG без использования доп. библиотек: GDI+ у меня на D2009 не завелся, там что-то поменялось, а качать версию, которая специально предназначена для D2009 мне лень, поэтому возиться с этим не стал.

Способ с OLE. Отработал, но я опять же не стал делать чистое API-приложение, положил на форму TPanel, и отрисовал на ней. Все прекрасно отобразилось:

// В интерфейсной части модуля
function OleLoadPicturePath(szUrlorPath: PWideChar;
unkCaller: IInterface; dwReserved: Integer; drReserved: Cardinal;
const iid: TGUID; ppvRet: Pointer): HRESULT; stdcall;


// а это - в Implementation
uses ActiveX, ComObj;

// Если не описать этого, то получишь ошибку, что OleLoadPicturePath отсутствует в модуле
// olepro32.dll ... Но оно действительно не там, а в oleaut32.dll, и это надо объяснить программе...
function OleLoadPicturePath; external 'oleaut32.dll' name 'OleLoadPicturePath';


const
IID_IPicture: TGUID = '{7BF80980-BF32-101A-8BBB-00AA00300CAB}';

procedure TForm1.Button5Click(Sender: TObject);
var
pic: IPicture;
f_name: WideString;

picWidth, picHeight: Integer;
bounds: TRect; // Здесь оно на фиг не надо. но Render требует...
begin
f_name := 'F:\Test\av-1235.jpg';
Pic := nil;

OleCheck( OleLoadPicturePath(PWideChar(f_name), nil, 0, 0, IID_IPicture, @Pic) );
OleCheck( pic.get_Width(picWidth) );
OleCheck( pic.get_Height(picHeight) );

pic.Render(GetWindowDC(Panel1.Handle), 0, 0, Panel1.Width, Panel1.Height,
0, picHeight, picWidth, -picHeight, bounds);
end;


Не думаю, что будет сложно сделать то же самое на чистом API smile.gif

 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 



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